MEMORY ENGINE
(RAMに格納されたテーブル)を使用しているテーブルについて読んでいました。SELECTとしてのテーブルの作成 - RAMメモリのメモリエンジンを使用して
は
CREATE TABLE AS SELECT
構文を使用することが可能ですが、作成したテーブルたちMEMORY ENGINE
がありますか?MEMORYテーブルのサイズには制限がありますか?物理的な1.5 GBのテーブルのコピーであるMEMORYテーブルを作成できましたか?
MEMORY ENGINE
(RAMに格納されたテーブル)を使用しているテーブルについて読んでいました。SELECTとしてのテーブルの作成 - RAMメモリのメモリエンジンを使用して
はCREATE TABLE AS SELECT
構文を使用することが可能ですが、作成したテーブルたちMEMORY ENGINE
がありますか?
MEMORYテーブルのサイズには制限がありますか?物理的な1.5 GBのテーブルのコピーであるMEMORYテーブルを作成できましたか?
はい、それは単純な構文CREATE TABLE t AS SELECT ...
で行わはなく、することができます - あなたは、full statementでサンプルをテーブルの列を指定する必要があります。
CREATE TABLE t (col1 INT(11), col2 INT(11))
ENGINE=MEMORY
AS
SELECT * FROM another_t
デフォルトでは、テーブルの最大サイズ16Mb
の場合はmax_heap_table_size
のサーバーシステム変数で調整できます。ただし、この制限はエンジンあたりであり、 - ではないです。私。すべてのmemory
テーブルがそれを共有します。
CREATE TEMPORARY TABLE IF NOT EXISTS tmp ENGINE=MEMORY AS (
SELECT 'abc' As tomcat, 'def' As apache);
または:個々のテーブルのサイズを制限するには、
mysql> SET max_heap_table_size = 24*1024*1024;
あなたもこの方法を一時テーブルを作成することができますように、max_heap_table_size
ためセッション値を操作する必要がありますこの方法:
CREATE TEMPORARY TABLE IF NOT EXISTS tmp ENGINE=MEMORY AS (
SELECT tomcat, apache From servers);
最初のオプションonは2つのカラムをvarchar(3)として作成し、2つ目のオプションは元のテーブルからカラム情報をコメントにもインポートします。
+1。また、 'max_heap_table'に達すると、テーブルが静かにディスクに書き込まれることを覚えています。 –
"実際の制限は、tmp_table_sizeとmax_heap_table_sizeのどちらの値が小さいかによって決まります。メモリ内のテンポラリテーブルが制限を超えた場合、MySQLは自動的にディスク上のMyISAMテーブルに変換します。 'tmp_table_size'(必要であれば' max_heap_table_size')を実行します。多くの高度な 'GROUP BY'クエリを実行し、たくさんのメモリを持っているとします。 ソース:https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tmp_table_size –