Ответ 1
Вы должны настроить способ создания и загрузки таблицы
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;