Měli byste upravit způsob výroby a zatížení stolu
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;
Tím se obejdou všechna uložená omezení tmp_table_size a max_heap_table_size .
Stejně tak musíte udělat dvě věci:
Přidejte to do /etc/my.cnf
[mysqld]
tmp_table_size=2G
max_heap_table_size=2G
to pokryje restarty mysql. Chcete-li nastavit tyto hodnoty v mysqld právě teď bez restartování, spusťte toto:
SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;
Pokud kontrolujete výše uvedené proměnné pomocí
SELECT @@max_heap_table_size;
nebo
SHOW VARIABLES LIKE 'max_heap_table_size';
můžete si všimnout, že se zdá, že se po SET GLOBAL...
nemění prohlášení. Důvodem je to, že nastavení platí pouze pro nová připojení k serveru. Vytvořte nové připojení a uvidíte, že se hodnoty aktualizují, nebo je můžete změnit během relace spuštěním:
SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;