メモリー上に一時的に作成出来るテーブルで、HEAPテーブルと呼ばれる。以下の特徴がある。

  • メモリ内に作成されるのでアクセスが非常に早い
  • 他のクライアントからでも参照ができる
  • ユニークなインデックスを持たせる事ができない
  • 固定長のフィールドだけを扱う事ができる
  • BLOB、TEXT型は使用出来ない
  • AUTO_INCREMENTは使用出来ない
  • NULLを許しているフィールドにインデックスを張れない
  • インデックスは=と<=>の比較演算子が使用されたときだけ使用される
  • テーブルの作成は、CREATE TABLE ・・・・ TYPE=HEAP
  • テーブルの破棄は、DROP TABLE

使用例

mysql> create table test type=heap select id,os from test11;
ERROR 1050: Table 'test' already exists
mysql> create table test12 type=heap select id,os from test11;
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select * from test12;
+------+-----------------------+
| id   | os                    |
+------+-----------------------+
|    1 | Linux                 |
|    2 | Solaris               |
|    3 | Linux,Solaris         |
|    4 | Windows               |
|    5 | Linux,Windows         |
|    6 | Solaris,Windows       |
|    7 | Linux,Solaris,Windows |
+------+-----------------------+
7 rows in set (0.00 sec)

mysql> drop table test12;
Query OK, 0 rows affected (0.00 sec)

オプション

使用するメモリの量を制限したい場合は、MAX_ROWSオプションを指定する。

mysql> create table test12 ( i int, c char(255) ) type=heap max_rows=999;
Query OK, 0 rows affected (0.00 sec)

max_heap_table_size変数で指定された値より大きなサイズのHEAPテーブルは作成出来ない。max_heap_table_size変数は、mysqldかsafe_mysqld(mysqld_safe)に-O max_heap_table_size=10Mのようにして与える変数で、現在の値を確認するには、シェルで以下のように確認するか、

$ /usr/local/mysql/bin/mysqladmin variables
+---------------------+-----------+
| Variable_name       | Value     |
+---------------------+-----------+
| max_heap_table_size | 16777216  |
+---------------------+-----------+
(注)実際には様々な変数の値が出力されます

mysql>プロントから、以下のSHOW文を発行する。

mysql> show variables;
+---------------------+-----------+
| Variable_name       | Value     |
+---------------------+-----------+
| max_heap_table_size | 16777216  |
+---------------------+-----------+
(注)実際には様々な変数の値が出力されます

MySQL/テーブル型


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-01-28 (金) 21:32:49 (3065d)