EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第12回 MySQL事始 ストレージエンジン(3) 各種のストレージエンジン

edited by DB Online   2012/05/09 00:00

MEMORY

 MEMORYストレージエンジンは、全てのデータをメインメモリ格納します。他のテーブルはディスク上にデータを格納しておきながら、特定のテーブルだけインメモリデータベースとすることができます。MEMORYストレージエンジンと他のストレージエンジンのテーブルをJOINすることも可能です。

 デフォルトではインデックスはHASHインデックスとなるため、範囲検索などではインデックスでは利用できません。範囲検索などを行う場合は、BTREEインデックスを明示的に指定する必要があります。

mysql> CREATE INDEX idx_bt USING BTREE ON mem_tbl (id);

 テーブルのサイズの上限値はmax_heap_table_sizeで指定できます。なお、TEXT型とBLOB型は利用できません。データはメインメモリ上に格納されるため、サーバの停止時や再起動時にはデータが保持されません。MySQLサーバの起動時にデータをロードする場合は、--init-filesにデータをロードするSQLを記載したファイルを指定します。データの登録や変更時に永続化させるためには、InnoDBなどのテーブルにトリガーを設定しておき、InnoDBのテーブルに登録された内容をMEMORYエンジンにINSERTする方法もあります。

 例)永続化したいデータをtest1テーブルのid列とname列にINSERTすると、MEMORYストレージエンジンを使用したmem_tblテーブルのid列とname列にその値が格納されるトリガーを作成する場合

delimiter $$

CREATE TRIGGER bi_mem_tbl BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    INSERT INTO mem_tbl (id, name) VALUES (NEW.id, NEW.name);
  END;

$$

delimiter ;

著者プロフィール

  • 梶山隆輔(カジヤマリュウスケ)

    日本オラクル株式会社 MySQL Global Business Unit Asia Pacific & Japan担当 MySQL Principal Sales Consultant オラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて、台湾、オーストラリア、インドに在籍するチームメンバーを束ね、アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。  

バックナンバー

連載:MySQL事始

もっと読む

All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5