Si dovrebbe regolare il modo di fare e caricare 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;
questo sarà aggirare eventuali limiti imposti dalla tmp_table_size e max_heap_table_size.
Proprio lo stesso, è necessario fare due cose:
Aggiungi questo al /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
questa coprirà riavvio di MySQL. Per impostare questi valori a mysqld in questo momento senza riavviare eseguire questo:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Se si sta controllando le variabili di cui sopra con
SELECT @@max_heap_table_size;
o
SHOW VARIABLES LIKE 'max_heap_table_size';
si può notare che don' t sembra cambiare seguendo le dichiarazioni SET GLOBAL...
. Questo perché le impostazioni si applicano solo alle nuove connessioni al server. Effettuare una nuova connessione, e vedrete l'aggiornamento dei valori o si potrebbe cambiare entro la sessione eseguendo:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;
Se lo stai modificando in una tabella di memoria, perché sei preoccupato per il trasferimento dei dati? Dovresti essere pronto a perderlo! Quindi basta troncarlo e quindi modificare la tabella ... – VBAssassin
Perché imposti 'tmp_table_size = 2G'? L'ho lasciato al valore predefinito (16MiB) nel mio server 5.5 e sono ancora in grado di memorizzare fino al mio 'max_heap_table_size' (~ 400MiB) nelle tabelle con memoria supportata. –
È anche possibile modificare le 2 variabili precedenti per la sessione solo facendo così 'SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2; SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2; ' – Jaylen