Dovresti modificare il modo in cui crei e carichi la tabella
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;
Ciò consentirà di aggirare eventuali limiti imposti da tmp_table_size e max_heap_table_size .
Lo stesso, devi fare due cose:
Aggiungilo a /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
questo coprirà i riavvii di MySQL. Per impostare questi valori in mysqld in questo momento senza riavviare, esegui questo:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Se stai controllando le variabili sopra con
SELECT @@max_heap_table_size;
o
SHOW VARIABLES LIKE 'max_heap_table_size';
potresti notare che non sembrano cambiare dopo il SET GLOBAL...
dichiarazioni. Questo perché le impostazioni si applicano solo alle nuove connessioni al server. Crea una nuova connessione e vedrai i valori aggiornati oppure puoi cambiarli all'interno della tua sessione eseguendo:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;