目次
MyISAM
テーブル [+/-]MERGE
テーブル [+/-]ISAM
テーブルHEAP
テーブルInnoDB
テーブル [+/-]InnoDB
についての問い合わせ先BDB
または BerkeleyDB
テーブル [+/-]
MySQL バージョン 3.23.6 より、3
種類の基本テーブル形式(ISAM
、HEAP
、MyISAM
)を選択できるようになりました。これより新しい
MySQL
のバージョンでは、コンパイルの方法に応じて追加のテーブル型(InnoDB
または
BDB
)をサポートしています。1
つのデータベースに異なる型のテーブルを収容することができます。
新しいテーブルを作成するときに、そのテーブルの型を
MySQL
に通知できます。通常、デフォルトのテーブル型は
MyISAM
です。
MySQL では、テーブル定義とカラム定義を保持する
.frm
ファイルが必ず作成されます。テーブルのインデックスとデータは、テーブル型に応じて、このファイル以外の
1 つ以上のファイルに格納されます。
コンパイルまたはアクティブ化されていないテーブル型を使用しようとすると、MySQL
によってそのテーブル型の代わりに
MyISAM
型のテーブルが作成されます。この動作は、さまざまなテーブル型をサポートする
MySQL
サーバ間でテーブルをコピーする場合に便利です(ほとんどの場合、マスタサーバは安全性を高めるためにトランザクションストレージエンジンをサポートし、スレーブサーバは処理速度を高めるために非トランザクションストレージエンジンのみをサポートしています)。
MySQL の初心者は、このテーブル型の自動変更に戸惑うかもしれません。この点については、バージョン 4.1 で新しいクライアント/サーバプロトコルに警告を導入し、テーブル型が自動変更される際に警告を生成する方法で対応する予定です。
ALTER TABLE
ステートメントを使用すれば、テーブルを別の型に変換できます。
See 項6.5.4. 「ALTER TABLE
構文」。
MySQL では 2
種類のテーブルをサポートしていることに注意してください。1
つはトランザクションセーフのテーブル(InnoDB
と BDB
)、もう 1
つは非トランザクションセーフのテーブル(HEAP
、ISAM
、MERGE
、MyISAM
)です。
トランザクションセーフのテーブル(TST)には次の利点があります。
安全性が高い。MySQL のクラッシュやハードウェア障害が発生した場合でも、自動リカバリによって、またはバックアップとトランザクションログからデータを復元できる。
多数のステートメントを組み合わせ、それらすべてを
COMMIT
コマンドで一括して受け付けられる。
ROLLBACK
を実行して変更を無効にできる(オートコミットモードで実行していない場合)。
更新が失敗した場合は、すべての変更がリストアされる(NTST テーブルでは、行われたすべての変更が確定される)。
テーブルで読み取りと同時に多数の更新が行われる場合に、優れた並行処理を実現する。
InnoDB
テーブルを使用するには、少なくとも
innodb_data_file_path
起動オプションを使用する必要があることに注意してください。
See 項7.5.3. 「InnoDB 起動オプション」。
非トランザクションセーフのテーブル(NTST)には次の利点があります。
トランザクションのオーバーヘッドがないため、処理がはるかに迅速。
トランザクションのオーバヘッドがないため、使用するディスク領域が少なくて済む。
少ないメモリで更新を実行できる。
同じステートメントで TST テーブルと NTST テーブルを組み合わせると、両方の利点を活かすことができます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.