|
||||||||||||||
| 前のページ 1 2 3 | ||||||||||||||
| InnoDBテーブルの特徴 | ||||||||||||||
|
InnoDBのテーブルは、クラスタードインデックスと呼ばれる特別なインデックスを備えた構造にて、テーブルスペースの中に格納されます。クラスタードインデックスとは、図2に示すように、リーフと呼ぶインデックスの最下位レベルの部分がテーブルのレコードそのものになっている構成のインデックスです。よって、テーブル内のレコードはインデックス値の順に並んでいるといった特長を持ちます。Oracleでは、この構成を索引構成表と呼び、通常のテーブルと区別して提供しています。 ![]() 図2:クラスタードインデックス InnoDBのクラスタードインデックスの値としては、プライマリキーが使用されるため、プライマリキーの値順にレコードが並んだ構成のテーブルとなります。プライマリキーが定義されていないテーブルの場合は、InnoDBが自動的に6バイトのローIDと呼ぶフィールドをレコードに追加し、このローIDを用いてクラスタードインデックスを構成します。 クラスタードインデックスは、構造上1テーブルに1つしか作成できません。そこで、セカンダリーインデックスとして、非クラスタードインデックスが作成できます。非クラスタードインデックスのリーフ部分には、プライマリキー値もしくは、ローIDが使用され、最終的にはクラスタードインデックスを通して、対象のレコードが選択されます。 |
||||||||||||||
| トランザクション機能について | ||||||||||||||
|
MyISAMエンジンはトランザクション機能を持っていませんが、MyISAMテーブルは更新できないわけではありません。INSERT/UPDATE/DELETEすべて実行可能です。トランザクション機能を持っていない分、非常に軽快に動作することで有名です。 またMyISAMのテーブルのロック単位はテーブル単位で、InnoDBのテーブルはレコード単位です。 |
||||||||||||||
| InnoDBエンジンのトランザクション機能 | ||||||||||||||
|
InnoDBのトランザクション機能の特長は以下の通りです。
表2:InnoDBのトランザクション機能の特長 InnoDBの読み込み一貫性機能の仕組みは、変更前データをロールバックセグメントに格納することによって実現しています。このロールバックセグメントは、テーブルスペース内に用意されます。機能だけでなく、実現方法もOracleに似ています。 ロックのエスカレーションが発生しない理由は、非常に少ないリソースにて個々のロックを実現しているためです。 ここで紹介した特長はほんの一部ですが、InnoDBのトランザクション機能は商用のRDBMSに匹敵する機能を有しています。 |
||||||||||||||
| InnoDBエンジンのトランザクションログ | ||||||||||||||
|
InnoDBは、トランザクションログのファイル群としてデータベースディレクトリ内の「ib_logfole0」ファイルと「ib_logfile1」ファイルを使用します。このファイル群のファイル数はユーザ自身で設定可能で、デフォルトで2つです。 各ログファイルのサイズは5Mバイトで、これも設定可能です。InnoDBは「ib_logfole0」ファイルと「ib_logfile1」ファイルを循環的に使用してREDOログと呼ぶ変更後データのログを記録します。 |
||||||||||||||
| まとめ | ||||||||||||||
|
今回は、MySQLを使用する際に非常によく使われるストレージエンジンのMyISAMとInnoDBを取り上げました。MyISAM/InnoDB共に、RDBMSとしては標準的な機能を有するストレージエンジンです。 次回以降は、多少変わった特長を持つストレージエンジンが登場しますので、ご期待ください。 |
||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||


