InnoDB
は、高い信頼性と高いパフォーマンスとのバランスをとる汎用のストレージエンジンです。MySQL 5.5 の時点では、これがデフォルトの MySQL ストレージエンジンです。MySQL 5.6 では、ENGINE=
句を指定せずに CREATE TABLE
ステートメントを発行すると、InnoDB
テーブルが作成されます。
InnoDB の主要な利点
InnoDB
テーブルの主要な利点は、次のとおりです。
その DML 操作は、トランザクションにユーザーデータを保護するためのコミット、ロールバック、およびクラッシュリカバリ機能が備わっている ACID モデルに従っています。
行レベルのロックと Oracle スタイルの一貫性読み取りを使用すると、複数ユーザーの並列性およびパフォーマンスが向上します。
InnoDB
テーブルでは、主キーに基づいてクエリーが最適化されるように、ディスク上のデータが整列されます。データの整合性を保つために、
InnoDB
ではFOREIGN KEY
制約もサポートされています。挿入、更新、および削除によってさまざまなテーブル間で不整合が発生しないかを確認するために、これらの操作がすべてチェックされます。同じステートメント内でも、
InnoDB
のテーブルと別の MySQL ストレージエンジンのテーブルを混在させることができます。たとえば、結合操作を使用すると、単一のクエリーでInnoDB
テーブルとMEMORY
テーブルのデータを結合できます。InnoDB
は、大きなデータボリュームを処理する際に、高い CPU の効率性と最大のパフォーマンスが実現されるように設計されています。
表 14.1 InnoDB ストレージエンジンの機能
機能 | Support |
---|---|
B ツリーインデックス | はい |
MVCC | はい |
T ツリーインデックス | いいえ |
インデックスキャッシュ | はい |
クエリーキャッシュのサポート | はい |
クラスタデータベースのサポート | いいえ |
クラスタ化されたインデックス | はい |
ストレージの制限 | 64T バイト |
データキャッシュ | はい |
データディクショナリ向け更新統計 | はい |
トランザクション | はい |
ハッシュインデックス | いいえ (InnoDB は、アダプティブハッシュインデックス機能に対して、内部的にハッシュインデックスを利用します。) |
バックアップ/ポイントインタイムリカバリ (ストレージエンジン内ではなくサーバー内で実装されています。) | はい |
レプリケーションのサポート (ストレージエンジン内ではなくサーバー内で実装されています。) | はい |
ロック粒度 | 行 |
全文検索インデックス | はい (InnoDB の FULLTEXT インデックスサポートは MySQL 5.6.4 以降で使用できます。) |
圧縮データ | はい (圧縮された InnoDB テーブルは InnoDB Barracuda ファイルフォーマットを必要とします。) |
地理空間インデックスのサポート | はい (InnoDB の地理空間インデックスサポートは MySQL 5.7.5 以降で使用できます。) |
地理空間データ型のサポート | はい |
外部キーのサポート | はい |
暗号化データ (ストレージエンジン内ではなくサーバー内で (暗号化関数を使って) 実装されています。) | はい |
InnoDB
ストレージエンジンには、データとインデックスをメインメモリーにキャッシュするための独自のバッファープールが保持されています。デフォルトでは、innodb_file_per_table
設定が有効になっているため、新しい各 InnoDB
テーブルとそれに関連付けられたインデックスが個別のファイルに格納されます。innodb_file_per_table
オプションを無効にすると、InnoDB
ではそのテーブルとインデックスがすべて単一のシステムテーブルスペースに格納されます。システムテーブルスペースは、複数のファイル (または生のディスクパーティション) で構成されている場合があります。InnoDB
テーブルは、ファイルサイズが 2G バイトに制限されているオペレーティングシステム上でも、大量のデータを処理できます。
InnoDB
の機能と MySQL で提供されているその他のストレージエンジンを比較する方法については、第15章「代替ストレージエンジン」の「ストレージエンジンの機能」表を参照してください。
InnoDB の拡張機能と新機能
MySQL 5.6 での InnoDB
の拡張機能と新機能については、次を参照してください。
InnoDB
の拡張機能については、セクション1.4「MySQL 5.6 の新機能」に一覧表示されています。ここでは、MySQL 5.6 で追加された機能の概要が示されています。リリースノート。ここでは、各バージョンでの変更に関する情報が提供されています。
追加のリソース
InnoDB
関連の用語および定義については、MySQL 用語集を参照してください。InnoDB
ストレージエンジン専用のフォーラムには、MySQL Forums::InnoDB からアクセスできます。InnoDB
は、MySQL と同じ GNU GPL ライセンスバージョン 2 (1991 年 6 月) によって発行されています。MySQL ライセンスの詳細は、http://www.mysql.com/company/legal/licensing/を参照してください。