SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

MySQL事始

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

第12回

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 ;

次のページ
ARCHIVE

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
MySQL事始連載記事一覧

もっと読む

この記事の著者

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/3930 2012/05/09 00:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年6月28日(火)13:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング