今回はMySQLのストレージのうち、第11回でご紹介したInnoDB以外のストレージエンジンをご紹介いたします。
InnoDBを含む代表的なストレージエンジンの主な特徴
InnoDBを含む代表的なストレージエンジンの主な特徴は以下の通りです。
機能 | InnoDB | MyISAM | Memory | Archive | NDB |
上限サイズ | 64TB | 256TB | メモリサイズに依存 | 上限なし | 384EB |
トランザクション | Yes | No | No | No | Yes |
ロックの粒度 | 行 | 表 | 表 | 表 | 行 |
MVCC | Yes | No | No | No | No |
地理空間(Geospatial) データ型 |
Yes | Yes | No | Yes | Yes |
地理空間(Geospatial) インデックス |
No | Yes | No | No | No |
Bツリーインデックス | Yes | Yes | Yes | No | Yes |
ハッシュインデックス | No | No | Yes | No | Yes |
全文検索インデックス | No | Yes | No | No | No |
クラスタインデックス | Yes | No | No | No | No |
データ圧縮 | Yes |
Yes (読み取り専用) |
No | Yes | No |
分散型クラスタ データベース |
No | No | No | No | Yes |
外部キー | Yes | No | No | No | No |
MyISAM
MyISAMはMySQL 5.1以前のデフォルトのストレージエンジンでした。MyISAMは非常にシンプルで軽量なストレージエンジンです。シンプルな構造ゆえに参照処理の性能が高く、またファイルをOSのコピーコマンドだけでテーブルを他のMySQLサーバなどにコピー出来る高い可搬性を持っています。
ただしここ最近のアプリケーションではInnoDBの利用が主流となり、MyISAMの利用は減っています。MyISAMはトランザクションに対応しておらず、更新処理の際はテーブルレベルロック(InnoDBは行レベルロック)のため同時実行性に大きな制約があります。さらにデータ変更中にMySQLサーバが停止してしまった場合に簡単にデータファイルが破損し、自動復旧の方法が無いことなども理由となっています。次世代のMySQL 5.6では、全文検索やGISインデックス(座標や地形情報データを格納したデータに対するインデックス)などMyISAMのみが持っている機能は全てInnoDBに実装する予定とされています。
MyISAMストレージエンジンを使用したテーブルには通常3個のファイルが作成されます。それぞれのファイル名はテーブル名と同じになります。
ファイルの内容 | 拡張子 |
テーブル定義 | .frm |
データ | .MYD |
インデックス | .MYI |
なお.frmファイルはどのストレージエンジンを利用した場合でも必ず作成されます。また、MyISAMのデータファイルは圧縮可能ですが、圧縮した場合は読み取り専用となり、データの変更は出来ません。圧縮にはmyisampackコマンドを使用します。このmyisampackコマンドはMySQLサーバを介さずに直接データファイルの変更を行うため、必ずMySQLサーバをシャットダウンした状態で実行する必要があります。
この記事は参考になりましたか?
- MySQL事始連載記事一覧
-
- MySQL事始 ストレージエンジン(3) 各種のストレージエンジン
- MySQL事始 ストレージエンジン(2) InnoDBストレージエンジン
- MySQL事始 ストレージエンジン(1) アーキテクチャ概要
- この記事の著者
-
梶山隆輔(カジヤマリュウスケ)
日本オラクル MySQL Global Business Unit Asia Pacific & Japan担当 MySQLソリューション・エンジニアリング・ディレクターオラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なM...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア