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事始連載記事一覧
-
- MySQL事始 ストレージエンジン(3) 各種のストレージエンジン
- MySQL事始 ストレージエンジン(2) InnoDBストレージエンジン
- MySQL事始 ストレージエンジン(1) アーキテクチャ概要
- この記事の著者
-
梶山隆輔(カジヤマリュウスケ)
日本オラクル MySQL Global Business Unit Asia Pacific & Japan担当 MySQLソリューション・エンジニアリング・ディレクターオラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なM...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア