Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


14.8.2 ファイル形式の互換性の確認

InnoDB 1.1 には、新しいファイル形式を使用している InnoDB データファイルに対して古いリリースの MySQL サーバーを実行した場合に発生する可能性のあるクラッシュやデータ破損から保護するためのチェックがいくつか組み込まれています。これらのチェックは、サーバーが起動されたときと、テーブルに最初にアクセスしたときに実行されます。このセクションでは、これらのチェック、それらを制御する方法、および発生する可能性のあるエラーや警告の状態について説明します。

下位互換性

下位互換性の考慮事項は、最新バージョンの InnoDB (InnoDB Plugin、または InnoDB 1.1 を含む MySQL 5.5 以降) を古いバージョン (MySQL 5.1 以前、InnoDB Plugin ではなく組み込み InnoDB を含む) とともに使用している場合にのみ適用されます。互換性の問題が発生する可能性を最小限に抑えるために、MySQL 5.1 以前のすべてのデータベースサーバーを InnoDB Plugin に基づいて標準化できます。

一般に、新しいバージョンの InnoDB は、クラッシュ、ハングアップ、結果の誤り、破損などのリスクなしでは、以前のバージョンの InnoDB で安全に読み取りまたは書き込みができないテーブルまたはインデックスを作成する可能性があります。InnoDB 1.1 には、これらの状態から保護するとともに、データベースファイルや InnoDB のバージョン間での互換性の維持に役立つメカニズムが含まれています。このメカニズムを使用すると、下位互換性のないディスクファイルを作成する新機能の誤った使用を回避することによって、InnoDB リリースのいくつかの新機能 (パフォーマンス向上やバグ修正など) を利用しながら、引き続き以前のバージョンの InnoDB でデータベースを使用するオプションを保持できます。

あるバージョンの InnoDB によって特定のファイル形式がサポートされている場合は (その形式がデフォルトであるかどうかにかかわらず)、その形式または以前の形式を必要とするすべてのテーブルをクエリーして更新することができます。新機能を使用する新しいテーブルの作成だけは、有効になっている特定のファイル形式に基づいて制限されます。逆に、あるテーブルスペースに、現在実行中のソフトウェアでサポートされていないファイル形式を使用するテーブルまたはインデックスが含まれている場合は、読み取りアクセスであっても、そのテーブルスペースにはまったくアクセスできません。

InnoDB テーブルスペースを以前のファイル形式にダウングレードするには、以前の形式を使用するテーブルスペース内の新しいテーブルにデータをコピーするしか方法がありません。これは、セクション14.8.4「ファイル形式のダウングレード」で説明されている ALTER TABLE ステートメントで実行できます。

既存の InnoDB テーブルスペースのファイル形式を判定するためのもっとも簡単な方法は、SHOW TABLE STATUS コマンドを使用するか、またはテーブル INFORMATION_SCHEMA.TABLES をクエリーして、そこに含まれているテーブルのプロパティーを検査することです。テーブルの Row_format'Compressed' または 'Dynamic' としてレポートされた場合、そのテーブルを含むテーブルスペースは Barracuda 形式を使用しています。それ以外の場合は、以前の InnoDB ファイル形式である Antelope を使用しています。

内部の詳細

InnoDB のテーブルごとのテーブルスペースファイル (*.ibd ファイルによって表されます) にはすべて、ファイル形式識別子のラベルが付けられます。システムテーブルスペース (ibdata ファイルによって表されます) には、InnoDB データベースファイルのグループで使用される最高のファイル形式のタグが付けられ、そのファイルが開かれるときにこのタグがチェックされます。

圧縮テーブルを作成するか、または ROW_FORMAT=DYNAMIC でテーブルを作成すると、対応する .ibd ファイルのファイルヘッダーと InnoDB データディクショナリ内のテーブルタイプが Barracuda ファイル形式の識別子で更新されます。その時点から、このテーブルは、この新しいファイル形式をサポートしていない InnoDB のバージョンでは使用できなくなります。異常な動作から保護するために、InnoDB バージョン 5.0.21 以降では、テーブルが開かれるときに互換性チェックを実行します。(多くの場合、ALTER TABLE ステートメントはテーブルを再作成し、それによってそのプロパティーを変更します。テーブルを再構築することなくインデックスを追加または削除する特殊なケースについては、InnoDB Fast Index Creationで説明されています。)

ib-file セットの定義

混乱を避けるために、この説明ではib-file セットという用語を、InnoDB が単位として管理する一連のオペレーティングシステムファイルを示すものとして定義します。ib-file セットには、次のファイルが含まれています。

  • システムテーブルスペース (1 つ以上の ibdata ファイル)。これには、内部のシステム情報 (内部のカタログや Undo 情報を含む) が含まれるほか、ユーザーデータとインデックスも含まれる可能性があります。

  • 0 個以上の単一テーブルのテーブルスペース (file per table ファイルとも呼ばれ、*.ibd ファイルという名前が付けられます)。

  • InnoDB ログファイル。通常は、ib_logfile0ib_logfile1 の 2 つです。クラッシュリカバリやバックアップに使用されます。

ib-file セットには、InnoDB テーブルに関するメタデータが含まれた、対応する .frm ファイルは含まれません。.frm ファイルは MySQL によって作成および管理され、InnoDB 内部のメタデータとの同期がとれなくなる場合があります。

1 つのib-file セットに (場合によっては複数のデータベースの) 複数のテーブルを格納できます。(MySQL では、データベースは、ほかのシステムではスキーマまたはカタログと呼ばれる、テーブルの論理的なコレクションです。)


User Comments
Sign Up Login You must be logged in to post a comment.