InnoDB
は、高い信頼性と高いパフォーマンスとのバランスをとる汎用のストレージエンジンです。 MySQL 8.0 では、InnoDB
がデフォルトの MySQL ストレージエンジンです。 別のデフォルトのストレージエンジンを構成していないかぎり、ENGINE=
句を指定せずに CREATE TABLE
ステートメントを発行すると、InnoDB
テーブルが作成されます。
InnoDB の主要な利点
その DML 操作は、トランザクションにユーザーデータを保護するためのコミット、ロールバック、およびクラッシュリカバリ機能が備わっている ACID モデルに従っています。 詳しくはセクション15.2「InnoDB および ACID モデル」をご覧ください。
行レベルのロックと Oracle スタイルの一貫性読み取りを使用すると、複数ユーザーの並列性およびパフォーマンスが向上します。 詳しくはセクション15.7「InnoDB のロックおよびトランザクションモデル」をご覧ください。
InnoDB
テーブルでは、主キーに基づいてクエリーが最適化されるように、ディスク上のデータが整列されます。 各InnoDB
テーブルには、主キー検索用の I/O を最小限に抑えるためにデータを編成する clustered index と呼ばれる主キーインデックスがあります。 詳しくはセクション15.6.2.1「クラスタインデックスとセカンダリインデックス」をご覧ください。データ integrity をメンテナンスするために、
InnoDB
ではFOREIGN KEY
制約がサポートされています。 外部キーでは、挿入、更新および削除がチェックされ、異なるテーブル間で不整合が発生しないことが確認されます。 詳しくはセクション13.1.20.5「FOREIGN KEY の制約」をご覧ください。
表 15.1 「InnoDB ストレージエンジンの機能」
機能 | Support |
---|---|
B ツリーインデックス | はい |
MVCC | はい |
T ツリーインデックス | いいえ |
インデックスキャッシュ | はい |
クラスタデータベースのサポート | いいえ |
クラスタ化されたインデックス | はい |
ストレージの制限 | 64TB |
データキャッシュ | はい |
データディクショナリ向け更新統計 | はい |
トランザクション | はい |
ハッシュインデックス | いいえ (InnoDB は、アダプティブハッシュインデックス機能に対して、内部的にハッシュインデックスを利用します。) |
バックアップ/ポイントインタイムリカバリ (ストレージエンジン内ではなくサーバー内で実装されています。) | はい |
レプリケーションのサポート (ストレージエンジン内ではなくサーバー内で実装されています。) | はい |
ロック粒度 | 行 |
全文検索インデックス | はい (FULLTEXT インデックスに対する InnoDB サポートは、MySQL 5.6 以降で使用できます。) |
圧縮データ | はい |
地理空間インデックスのサポート | はい (InnoDB での地理空間インデックス付けのサポートは、MySQL 5.7 以降で使用できます。) |
地理空間データ型のサポート | はい |
外部キーのサポート | はい |
暗号化データ | はい (暗号化機能を介してサーバーに実装されます。MySQL 5.7 以降では、保存データのテーブルスペース暗号化がサポートされます。) |
InnoDB
の機能と MySQL で提供されているその他のストレージエンジンを比較する方法については、第16章「代替ストレージエンジン」の「ストレージエンジンの機能」表を参照してください。
InnoDB の拡張機能と新機能
InnoDB
の拡張機能および新機能の詳細は、次を参照してください:
セクション1.3「MySQL 8.0 の新機能」 の
InnoDB
拡張機能のリスト。
追加の InnoDB 情報およびリソース
InnoDB
関連の用語および定義については、MySQL 用語集 を参照してください。InnoDB
ストレージエンジン専用のフォーラムについては、MySQL Forums::InnoDB を参照してください。InnoDB
は、MySQL と同じ GNU GPL ライセンスバージョン 2 (1991 年 6 月) によって発行されています。 MySQL ライセンスの詳細は、http://www.mysql.com/company/legal/licensing/を参照してください。