テーブルの作成と読み込みの方法を調整する必要があります
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;
これにより、<によって課せられた制限を回避できます。 strong> tmp_table_size
および
同じように、2つのことを行う必要があります:
これを/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;