Трябва да коригирате начина, по който правите и зареждате таблицата
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;
Това ще заобиколи всички наложени ограничения от tmp_table_size и max_heap_table_size .
По същия начин трябва да направите две неща:
Добавете това към /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
това ще обхване рестартирането на mysql. За да зададете тези стойности в mysqld точно сега, без да рестартирате, изпълнете това:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Ако проверявате горните променливи с
SELECT @@max_heap_table_size;
или
SHOW VARIABLES LIKE 'max_heap_table_size';
може да забележите, че изглежда не се променят след SET GLOBAL...
изявления. Това е така, защото настройките се прилагат само за нови връзки към сървъра. Направете нова връзка и ще видите, че стойностите се актуализират или можете да я промените в рамките на сесията си, като изпълните:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;