目次
InnoDB
連絡先情報InnoDB
設定 [+/-]InnoDB
スタートアップオプションとシステム変数InnoDB
テーブルの作成と利用 [+/-]InnoDB
データおよびログファイルの追加、削除、またはサイズ変更InnoDB
データベースのバックアップと復旧 [+/-]InnoDB
データベースを別のマシンに移動するInnoDB
トランザクションモデルとロック [+/-]InnoDB
マルチバージョン管理InnoDB
テーブルとインデックス構造 [+/-]InnoDB
ディスク入出力とファイル領域管理 [+/-]InnoDB
エラー処理 [+/-]InnoDB
パフォーマンスチューニングとトラブルシューティング [+/-]InnoDB
テーブル上の制約
InnoDB
はトランザクションセーフな (ACID に準拠した) MySQL
用のストレージエンジンであり、ユーザーデータを保護するためのコミット、ロールバック、およびクラッシュ復旧機能を備えています。InnoDB
の行レベルロック
(より粒度の粗いロックへのエスカレーションは行わない)
と Oracle
スタイルの一貫性非ロック読み取りにより、マルチユーザーの並列性とパフォーマンスが向上します。InnoDB
では主キーに基づく一般的なクエリーでの入出力の低減を図るため、クラスタインデックス内にユーザーデータが格納されます。InnoDB
ではデータの整合性を維持できるように、FOREIGN
KEY
参照整合性制約もサポートされています。同じステートメント内で
InnoDB
テーブルと別の
MySQL
ストレージエンジンからのテーブルを混合することができます。
サーバーが InnoDB
をサポートしているかどうかを確認するには、SHOW
ENGINES
ステートメントを使用します。項8.5.5.17. 「SHOW ENGINES
構文」
を参照してください。
表 9.1. InnoDB の機能
ストレージ制限 | 64TB | トランザクション | Yes | ロックの粒度 | 行 |
MVCC | Yes | 地理空間データ型のサポート | Yes | 地理空間インデックスのサポート | No |
B ツリーインデックス | Yes | ハッシュインデックス | No | フルテキスト検索インデックス | No |
クラスタインデックス | Yes | データキャッシュ | Yes | インデックスキャッシュ | Yes |
圧縮データ | Yes [a] | 暗号化されたデータ [b] | Yes | クラスタデータベースサポート | No |
レプリケーションサポート [c] | Yes | 外字サポート | Yes | バックアップ/ポイントインタイムリカバリ [d] | Yes |
クエリキャッシュサポート | Yes | データ辞書の更新統計 | Yes | ||
[a] InnoDB 圧縮テーブルは InnoDB Plugin でしかサポートされません。 [b] ストレージエンジン内ではなくサーバー内で (暗号化関数を使って) 実装されています。 [c] ストレージエンジン内ではなくサーバー内で実装されています [d] ストレージエンジン内ではなくサーバー内で実装されています |
InnoDB
は大容量データ処理の最大性能のために設計されました。その
CPU
性能に匹敵するディスクベースのリレーショナルデータベースエンジンはほかにはないでしょう。
InnoDB
ストレージエンジンは、データやインデックスをメインメモリーにキャッシュするための独自のバッファープールを管理します。InnoDB
は、いくつかのファイル (または raw
ディスクパーティション)
で構成されるであろうテーブル領域内にそのテーブルとインデックスを格納します。これはたとえば、各テーブルが別々のファイルを利用して格納される
MyISAM
テーブルとは異なります。ファイルサイズが 2G
バイトまでに制限された OS
上でも、InnoDB
テーブルのサイズを非常に大きくすることができます。
Windows Essentials
インストーラを使用する場合、インストール先のサーバーが
InnoDB
のサポートをしていれば、InnoDB
が Windows 上でのデフォルトの MySQL
ストレージエンジンになります。
InnoDB
は高性能が求められる数々の大型データベースサイトにて、製造に利用されます。有名なインターネットニュースサイト
Slashdot.org は InnoDB
で起動しています。Mytrix,Inc. は
InnoDB
内に 1T
バイトを超えるデータを格納し、別のサイトは
InnoDB
内で 1 秒に 800
件の挿入/更新の平均負荷を扱っています。
InnoDB
は、MySQL と同じ GNU
GPL ライセンスバージョン 2(1991 年 6 月)
によって発行されています。MySQL
のライセンスの詳細については、http://www-jp.mysql.com/company/legal/licensing/
を参照してください。
追加情報
InnoDB
ストレージエンジンの専用フォーラムには、http://forums.mysql.com/list.php?22
からアクセスできます。
Innobase Oy にもいくつかのフォーラムがホストされています。それらには http://forums.innodb.com からアクセスできます。
Innobase は 2008 年の MySQL
ユーザーコンファレンスで、MySQL 用の
InnoDB Plugin
が入手可能になったことを発表しました。この
MySQL 用プラグインは、MySQL の
「プラグイン可能ストレージエンジン」
アーキテクチャーを活用することで、MySQL 5.1 で
「組み込み」 版の
InnoDB
をユーザーが置き換えられるようにします。
MySQL 5.1.38 以降の MySQL
リリースには、それまでのリリースで同梱されてきた組み込み版の
InnoDB
に加え、InnoDB Plugin
も同梱されています。このバージョンの
InnoDB Plugin
は 1.0.4
ですが、その品質はベータレベルとみなされています。
InnoDB Plugin
では新機能の追加、パフォーマンスとスケーラビリティーの改善、信頼性の向上、柔軟性や使いやすさを高めるための新機能の追加が行われています。InnoDB
Plugin
の機能としては、「高速インデックス作成」、テーブルおよびインデックスの圧縮、ファイル形式の管理、新しい
INFORMATION_SCHEMA
テーブル、容量調整、複数のバックグラウンド入出力スレッド、グループコミットなどが挙げられます。
これらの機能については、http://www.innodb.com/products/innodb_plugin/plugin-documentation
で InnoDB Plugin
のドキュメントを参照してください。MySQL での
InnoDB
の使用方法に関する一般的な情報については、章 9. InnoDB
ストレージエンジン
を参照してください。
InnoDB Plugin
は、RHEL3、RHEL4、SuSE 9 (x86、x86_64、ia64)、汎用
Linux RPM
パッケージ以外のソース配布やバイナリ配布に同梱されています。
InnoDB Plugin
を使用するには、同じく同梱されている組み込み版の
InnoDB
を無効にし、代わりに InnoDB
Plugin
を使用するようにサーバーに指示する必要があります。それを実現するには、my.cnf
ファイル内で次の行を使用します。
[mysqld] ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so
plugin-load
オプションの
innodb
はプラグインに関連付ける名前、ha_innodb_plugin.so
はプラグインコードを含む共有オブジェクトライブラリの名前です。拡張子
.so
は UNIX
(および類似の) システムに対するものです。HPPA
(11.11) の HP-UX と Windows
の拡張子は、.so
の代わりにそれぞれ
.sl
と
.dll
になります。
サーバーの起動時にプラグイン検索に関する問題が発生する場合には、プラグインディレクトリへのパス名を指定します。たとえば、MySQL
インストールディレクトリ配下の
lib/mysql/plugin
ディレクトリにプラグインが格納されていて、MySQL
のインストール先が
/usr/local/mysql
である場合には、my.cnf
ファイル内で次の行を使用します。
[mysqld] ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so plugin_dir=/usr/local/mysql/lib/mysql/plugin
上の例は、InnoDB Plugin
のストレージエンジン部分を有効にする方法を示したものですが、このプラグインには、InnoDB
関連の INFORMATION_SCHEMA
テーブルもいくつか実装されています。(これらのテーブルについては、http://www.innodb.com/doc/innodb_plugin-1.0/innodb-information-schema.html
を参照。)
これらのテーブルを有効にするには、次のように追加の
ペアを name
=library
plugin-load
オプションに含めます。
[mysqld] ignore-builtin-innodb plugin-load=innodb=ha_innodb_plugin.so ;innodb_trx=ha_innodb_plugin.so ;innodb_locks=ha_innodb_plugin.so ;innodb_cmp=ha_innodb_plugin.so ;innodb_cmp_reset=ha_innodb_plugin.so ;innodb_cmpmem=ha_innodb_plugin.so ;innodb_cmpmem_reset=ha_innodb_plugin.so
ここでは見やすいように、plugin-load
オプションで複数行にわたる書式が使われていますが、my.cnf
内ではオプション値に空白を含めずに 1
行で記述すべきです。Windows では、すべての
.so
拡張子を
.dll
に読み替えてください。
サーバーの起動が完了したら、SHOW
PLUGINS
ステートメントを使って
InnoDB Plugin
が読み込まれていることを確認します。たとえば、ストレージエンジンと
INFORMATION_SCHEMA
テーブルを読み込んだ場合であれば、次のような行が出力に含まれるはずです。
mysql> SHOW PLUGINS;
+---------------------+--------+--------------------+---------------------...
| Name | Status | Type | Library ...
+---------------------+--------+--------------------+---------------------...
...
| InnoDB | ACTIVE | STORAGE ENGINE | ha_innodb_plugin.so ...
| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
| INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | ha_innodb_plugin.so ...
+---------------------+--------+--------------------+---------------------...
MySQL
をソース配布から構築する場合、InnoDB
Plugin
は、デフォルトで構築されるストレージエンジンの
1
つになっています。項2.10. 「ソースの配布を使用した MySQL のインストール」の手順に従ったりしながら、MySQL
を通常どおりに構築します。構築が完了したら、storage/innodb_plugin
ディレクトリの下にプラグイン共有オブジェクトファイルが格納されており、make
install
を実行するとそれがプラグインディレクトリ内にインストールされるはずです。前述のバイナリ配布の場合と同じく、InnoDB
Plugin
を使用するように MySQL
を設定します。
InnoDB Hot Backup
を使えば、InnoDB
や
MyISAM
のテーブルなど、稼働中の MySQL
データベースのバックアップを行えますが、データベースの一貫性のあるスナップショットを作成している間、業務の中断を最小限に抑えることができます。InnoDB
Hot Backup が
InnoDB
テーブルをコピーしている際には、InnoDB
テーブルと MyISAM
テーブルの両方で読み取りと書き込みを継続できます。MyISAM
テーブルのコピー中は、それらのテーブルの読み取りが許可されます
(書き込みは不可)。さらに
InnoDB Hot Backup
は、圧縮バックアップファイルの作成と
InnoDB
テーブルのサブセットのバックアップ実行をサポートしています。MySQL
のバイナリログと組み合わせれば、ポイントインタイム復旧を実行できます。InnoDB
Hot Backup は、Innobase Oy
から商用ライセンスが提供されています。InnoDB
Hot Backup
のより詳しい説明については、http://www.innodb.com/hot-backup/features/
を参照するか、http://www.innodb.com/doc/hot_backup/manual.html
からドキュメントをダウンロードしてください。Innobase
(http://www.innodb.com/hot-backup/order/)
からトライアル、期間、および永久ライセンスを注文できます。