Sie sollten die Art und Weise, wie Sie die Tabelle erstellen und laden, anpassen
CREATE TABLE sns_memory SELECT * FROM sns WHERE 1=2;
ALTER TABLE sns_memory ENGINE=MEMORY;
INSERT INTO sns_memory SELECT * FROM sns;
DROP TABLE sns;
ALTER TABLE sns_memory RENAME sns;
Dadurch werden alle auferlegten Beschränkungen durch
Trotzdem müssen Sie zwei Dinge tun:
Fügen Sie dies zu /etc/my.cnf
hinzu[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
Dies deckt MySQL-Neustarts ab. Um diese Werte jetzt ohne Neustart in mysqld festzulegen, führen Sie Folgendes aus:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Wenn Sie die obigen Variablen mit
überprüfenSELECT @@max_heap_table_size;
oder
SHOW VARIABLES LIKE 'max_heap_table_size';
Sie werden vielleicht bemerken, dass sie sich nach SET GLOBAL...
nicht zu ändern scheinen Aussagen. Dies liegt daran, dass die Einstellungen nur für neue Verbindungen zum Server gelten. Stellen Sie eine neue Verbindung her, und Sie werden sehen, dass die Werte aktualisiert werden, oder Sie können sie innerhalb Ihrer Sitzung ändern, indem Sie Folgendes ausführen:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;