Debes ajustar la forma en que haces y cargas la mesa
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;
Esto evitará los límites impuestos por
De todos modos, debes hacer dos cosas:
Agregue esto a /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
esto cubrirá los reinicios de mysql. Para establecer estos valores en mysqld ahora mismo sin reiniciar, ejecute esto:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Si está comprobando las variables anteriores con
SELECT @@max_heap_table_size;
o
SHOW VARIABLES LIKE 'max_heap_table_size';
puede notar que no parecen cambiar después de SET GLOBAL...
declaraciones. Esto se debe a que la configuración solo se aplica a las nuevas conexiones al servidor. Realice una nueva conexión y verá que los valores se actualizan o puede cambiarlos dentro de su sesión ejecutando:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;