Mysql
 sql >> Database >  >> RDS >> Mysql

Come fare in modo che mysql MEMORY ENGINE memorizzi più dati?

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;