MySQL - ストレージエンジン

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2024年1月14日 (日) 11:38時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == ストレージエンジンとは、RDBMSにおいてデータやトランザクションの管理を行う機能のことである。<br> MySQLでは、テーブルごとにストレージエンジンを指定することができる。<br> <br> * データフォーマットの定義 * データ永続化 * インデックス管理 * トランザクション管理 * ロックおよび排他的制御 <br> <center> {| class="wikitable" | style="background…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

ストレージエンジンとは、RDBMSにおいてデータやトランザクションの管理を行う機能のことである。
MySQLでは、テーブルごとにストレージエンジンを指定することができる。

  • データフォーマットの定義
  • データ永続化
  • インデックス管理
  • トランザクション管理
  • ロックおよび排他的制御


主なストレージエンジン
ストレージエンジン 意味
InnoDB デフォルトのストレージエンジン。
行ロック、トランザクション、クラッシュリカバリ等に対応している。
MyISAM 古いMySQLのデフォルトのストレージエンジン。
テーブルレベルのロックに対応している。
MEMORY メモリ上にテーブルを配置する。
アクセス頻度の高いデータ向け。
Archive データを自動的に圧縮する。
データの追加、参照のみ行うことができる。
主に、ログや監査向けで使用する。
NDB MySQL Cluster構成にて使用される。
CSV CSV形式でデータを保存および使用する。
Blackhole /dev/nullのように書き込んだデータを破棄する。



ストレージエンジンの操作

利用可能なストレージエンジンの確認

 SHOW ENGINES;


ストレージエンジンを指定してテーブルの作成

 USE <データベース名>;
 
 CREATE TABLE <テーブル名> (
    <カラム名 1> <型名>
    <カラム名 2> <型名>
    <カラム名 3> <型名>
    -- ...略
 )
 ENGINE = <ストレージエンジン名>;


既存テーブルのストレージエンジン確認

 USE <データベース名>;
 
 SHOW TABLE STATUS
    where name = '<テーブル名>' \G;


既存テーブルのストレージエンジンの変更

 USE <データベース名>;
 
 ALTER TABLE <テーブル名> ENGINE = '<ストレージエンジン名>';
 
 -- 例: sample_tableテーブルのストレージエンジンをMEMORYに変更する
 ALTER TABLE sample_table ENGINE = 'MEMORY';