sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo hacer que mysql MEMORY ENGINE almacene más datos?

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 tmp_table_size y max_heap_table_size .

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;