Shoeisha Technology Media

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

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

テーマ別に探す

第11回 MySQL事始 ストレージエンジン(2) InnoDBストレージエンジン

edited by DB Online   2012/02/22 00:00

今回はMySQLのストレージの中でも、最も利用されているInnoDBについて解説します。トランザクションに対応したInnoDBはMySQL 5.5からデフォルトのストレージエンジンとなりました。

MySQL 5.5以降でのデフォルトのストレージエンジン

 以前はトランザクションをサポートしないMyISAMがデフォルトのストレージエンジンでしたが、2010年12月にリリースされたMySQL 5.5以降はInnoDBがデフォルトとなりました。InnoDBのデータサイズの上限は64TBです。InnoDBの主な機能は以下の通りです。

  •  トランザクション対応
  •  クラッシュリカバリ
  •  データとインデックスを表領域に格納
  •  外部キーのサポート

InnoDBのトランザクション管理

 InnoDBはACID準拠のトランザクションに対応したストレージエンジンです。トランザクションの独立性に関する分離レベルは、4種類全て実装しています。

トランザクションのACID特性
A Atomicity 原始性 処理が全て成功するか全て失敗するかのどちらか
C Consistency 一貫性 あらかじめ設定された整合性を保つ
I Isolation 独立性 他の処理に影響を与えない
D Durability 耐久性 完了した処理は永続的に保持される

 InnoDBはMVCC (Multi Version Concurrency Control)でトランザクションを実装しています。トランザクション開始時にディスク上のデータをメモリ上の「バッファプール」にコピーし、以降の操作をメモリ上で行います。別のトランザクションは別のバージョンのコピーを作るためMVCCと呼ばれます。

InnoDBのログ

 InnoDBはトランザクションをログに記録します。コミットされるまでの実行中のトランザクションはメモリ上にキャッシュされます。コミットが実行されるとディスク上のログファイルに書き出されます。コミット時に発生するディスクへの書き込みはログのみで、データそのものはチェックポイントと呼ばれるタイミングで別途書き出されます。

クラッシュリカバリ

 サーバが障害などで停止してしまった場合、データファイルとログファイルが正常な場合には、MySQLサーバの再起動時にクラッシュリカバリの処理が実行されます。このクラッシュリカバリではログファイルとデータファイルの比較を行い、コミットが完了しているのにデータに反映されていないトランザクションが存在する場合には、自動的にトランザクション内容をデータに反映していきます。

InnoDBの表領域

 InnoDBはデータを表領域に格納します。表領域は論理的な領域で、実際のデータは表領域ファイルなどに格納されます。デフォルトの設定では、複数のテーブルのデータとインデックスを1つのファイルに格納します。このファイルは、あらかじめ容量を設定しておくことや、容量を自動拡張するautoextendオプションを設定することができます。また複数ファイルにすることもできますが、autoextendオプションが使えるのはリストの最後に書かれたファイルのみです。

 例:1GBのibdata1とibdata2を表領域ファイルとし、容量の自動拡張を有効にした設定
innodb-data-file-path= ibdata1:1G;ibdata2:1G:autoextend

 innodb-file-per-tableオプションを使うと、テーブルごとにデータとインデックスを格納する表領域ファイルを作成します。また他のRDBMSと同様に、ファイルシステムを使わないrawデバイスを表領域に設定することも可能です。但しrawデバイスの利用はMySQLの運用ではあまり一般的ではありません。


著者プロフィール

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

    日本オラクル株式会社 MySQL Global Business Unit Asia Pacific & Japan担当 MySQL Principal Sales Consultant オラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコ...

バックナンバー

連載:MySQL事始

もっと読む

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