U moet de manier aanpassen waarop u de tabel maakt en laadt
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;
Dit zal alle opgelegde limieten omzeilen door tmp_table_size en max_heap_table_size .
Toch moet je twee dingen doen:
Voeg dit toe aan /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
dit dekt het opnieuw opstarten van mysql. Om deze waarden nu in mysqld in te stellen zonder opnieuw te starten, voer je dit uit:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Als u de bovenstaande variabelen controleert met
SELECT @@max_heap_table_size;
of
SHOW VARIABLES LIKE 'max_heap_table_size';
je zult misschien merken dat ze niet lijken te veranderen na de SET GLOBAL...
verklaringen. De instellingen gelden namelijk alleen voor nieuwe verbindingen met de server. Maak een nieuwe verbinding en u zult zien dat de waarden worden bijgewerkt of u kunt deze binnen uw sessie wijzigen door het volgende uit te voeren:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;