Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  代替ストレージエンジン

第 15 章 代替ストレージエンジン

ストレージエンジンは、さまざまなテーブル型に対する SQL 操作を処理する MySQL コンポーネントです。InnoDB はデフォルトでもっとも汎用のストレージエンジンであり、Oracle は、特別なユースケースを除くテーブルについては、このエンジンの使用を推奨します。(デフォルトでは、MySQL 5.6 の CREATE TABLE ステートメントは InnoDB テーブルを作成します。)

MySQL Server は、ストレージエンジンが、動作中の MySQL サーバーにロードされたり、MySQL サーバーからアンロードされたりできる、プラガブルストレージエンジンアーキテクチャーを採用しています。

ご使用のサーバーがサポートするストレージエンジンを調べるには、SHOW ENGINES ステートメントを使用します。サポートカラムの値は、エンジンを使用できるかどうかを示します。YESNO、または DEFAULT の値は、エンジンが「使用可能」、「使用可能でない」、または「デフォルトのストレージエンジンとして使用可能であり、現在設定されている」を表しています。

mysql> SHOW ENGINES\G
*************************** 1. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 3. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
...
  

この章では、特別な目的の MySQL ストレージエンジンのユースケースについて説明します。第14章「InnoDB ストレージエンジンおよび 第18章「MySQL Cluster NDB 7.3 および MySQL Cluster NDB 7.4で説明するデフォルトの InnoDB ストレージエンジンまたは NDB ストレージエンジンについては説明しません。上級ユーザーのために、この章ではプラガブルストレージエンジンアーキテクチャーについても説明します (セクション15.11「MySQL ストレージエンジンアーキテクチャーの概要」を参照してください)。

商用 MySQL Server バイナリで提供されるストレージエンジンのサポートについては、MySQL Web サイトの MySQL Enterprise Server 5.6 を参照してください。使用可能なストレージエンジンは、使用中の Enterprise Server のエディションによって異なる場合があります。

MySQL ストレージエンジンに関するよくある質問の回答については、セクションA.2「MySQL 5.6 FAQ: ストレージエンジン」を参照してください。

MySQL 5.6 がサポートするストレージエンジン

  • InnoDB: MySQL 5.6 のデフォルトのストレージエンジン。InnoDB はトランザクションセーフな (ACID に準拠した) MySQL 用のストレージエンジンであり、ユーザーデータを保護するためのコミット、ロールバック、およびクラッシュリカバリ機能を備えています。InnoDB の行レベルロック (より粒度の粗いロックへのエスカレーションは行わない) と Oracle スタイルの一貫性非ロック読み取りにより、マルチユーザーの並列性とパフォーマンスが向上します。InnoDB では、主キーに基づいた一般的なクエリーの入出力を低減するため、クラスタ化されたインデックス内にユーザーデータが格納されます。InnoDB ではデータの整合性を維持できるように、FOREIGN KEY 参照整合性制約もサポートされています。InnoDB の詳細については、第14章「InnoDB ストレージエンジンを参照してください。

  • MyISAM: これらのテーブルのフットプリントは小さくなります。テーブルレベルのロック では、読み取り/書き込みの作業負荷でのパフォーマンスが抑えられるため、Web およびデータウェアハウス構成の読み取り専用または読み取りが大半の作業負荷の場合に使用されるのが一般的です。

  • メモリー: すべてのデータを RAM に格納します (重要でないデータの短時間での検索が必要な環境で高速にアクセスするため)。このエンジンは以前は HEAP エンジンとして知られていました。このユースケースは減少しています。バッファープールのメモリー領域を持つ InnoDB は、ほとんどのデータまたはすべてのデータをメモリーに保持する汎用的で永続的な方法を提供し、NDBCLUSTER は大規模な分散データセットでキー値の高速な検索ができます。

  • CSV: このテーブルは、カンマ区切り値を持つ実際のテキストファイルです。CSV テーブルにより、CSV フォーマットでデータをインポートしたりダンプしたりして、同じフォーマットを読み込んだり書き込んだりするスクリプトおよびアプリケーションとデータを交換できます。CSV テーブルはインデックス化されないため、通常の操作時はデータを InnoDB テーブルに保持し、インポートまたはエクスポートの段階でのみ CSV テーブルを使用するのが一般的です。

  • アーカイブ: これらのインデックス化されていないコンパクトなテーブルは、ほとんど参照されない大量の履歴情報、アーカイブされた情報、またはセキュリティー監査情報を格納したり、検索したりするためのテーブルです。

  • Blackhole: Blackhole ストレージエンジンはデータを受け付けますが、Unix /dev/null デバイスと同じように、格納しません。クエリーは常に空のセットを返します。これらのテーブルは、DML ステートメントはスレーブサーバーに送られますが、マスターサーバーはデータの独自のコピーを保持しないレプリケーション構成で使用できます。

  • NDB (NDBCLUSTER としても知られています) - クラスタ化されたこのデータベースエンジンは、稼働時間と可用性の程度ができるだけ高くなくてはいけないアプリケーションに特に適しています。

    注記

    NDB ストレージエンジンは、標準の MySQL 5.6 リリースではサポートされていません。現在サポートされている MySQL Cluster リリースには、MySQL 5.1 がベースの MySQL Cluster NDB 7.1、MySQL 5.5 がベースの MySQL Cluster NDB 7.2、MySQL 5.6 がベースの MySQL Cluster NDB 7.3 が含まれています。MySQL Server がベースである間、これらのリリースには NDB のサポートも含まれます。MySQL 5.6 もベースにした現在開発中の MySQL Cluster NDB 7.4 が、Developer Milestone リリースでも使用できるようになりました。

  • マージ: MySQL DBA または開発者は、一連のまったく同じ MyISAM テーブルを論理的にグループ分けして、それらを 1 つのオブジェクトとして参照します。データウェアハウスなどの VLDB 環境に適しています。

  • Federated: 多くの物理サーバーから 1 つの論理サーバーを作成するために別々の MySQL サーバーをリンクする機能を提供します。分散またはデータマート環境に非常に適しています。

  • : このエンジンは、新しいストレージエンジンの書き込みを開始する方法を示す MySQL ソースコードの例として機能します。これは、主に開発者が対象です。ストレージエンジンは何もしない stub です。このエンジンでテーブルを作成できますが、それらにデータを格納したり、それらからデータを取り出したりすることはできません。

サーバー全体またはスキーマ全体に同じストレージエンジンを使用するという制限はありません。いずれのテーブルにもストレージエンジンを指定できます。たとえばアプリケーションでは、InnoDB テーブルを使用している場合がほとんどであり、データをスプレッドシートにエクスポートするための CSV テーブルを 1 つ、テンポラリワークスペース用に MEMORY テーブルをいくつか持っています。

ストレージエンジンの選択

MySQL が提供するさまざまなストレージエンジンは、異なるユースケースで使用されることを想定して設計されています。次の表は、MySQL が提供するいくつかのストレージエンジンの概要について示しています。

表 15.1 ストレージエンジンの機能サマリー

機能 MyISAM メモリー InnoDB アーカイブ NDB
ストレージの制限 256T バイト RAM 64T バイト なし 384E バイト
トランザクション いいえ いいえ はい いいえ はい
ロック粒度 テーブル テーブル テーブル
MVCC いいえ いいえ はい いいえ いいえ
地理空間データ型のサポート はい いいえ はい はい はい
地理空間インデックスのサポート はい いいえ はい[a] いいえ いいえ
B ツリーインデックス はい はい はい いいえ いいえ
T ツリーインデックス いいえ いいえ いいえ いいえ はい
ハッシュインデックス いいえ はい いいえ[b] いいえ はい
全文検索インデックス はい いいえ はい[c] いいえ いいえ
クラスタ化されたインデックス いいえ いいえ はい いいえ いいえ
データキャッシュ いいえ N/A はい いいえ はい
インデックスキャッシュ はい N/A はい いいえ はい
圧縮データ はい[d] いいえ はい[e] はい いいえ
暗号化データ[f] はい はい はい はい はい
クラスタデータベースのサポート いいえ いいえ いいえ いいえ はい
レプリケーションのサポート[g] はい はい はい はい はい
外部キーのサポート いいえ いいえ はい いいえ いいえ
バックアップ/ポイントインタイムリカバリ[h] はい はい はい はい はい
クエリーキャッシュのサポート はい はい はい はい はい
データディクショナリ向け更新統計 はい はい はい はい はい

[a] InnoDB の地理空間インデックスサポートは MySQL 5.7.5 以降で使用できます。

[b] InnoDB は、アダプティブハッシュインデックス機能に対して、内部的にハッシュインデックスを利用します。

[c] InnoDB の FULLTEXT インデックスサポートは MySQL 5.6.4 以降で使用できます。

[d] 圧縮された MyISAM テーブルがサポートされているのは、圧縮行フォーマットを使用している場合だけです。MyISAM で圧縮行フォーマットを使用するテーブルは、読み取り専用です。

[e] 圧縮された InnoDB テーブルは InnoDB Barracuda ファイルフォーマットを必要とします。

[f] ストレージエンジン内ではなくサーバー内で (暗号化関数を使って) 実装されています。

[g] ストレージエンジン内ではなくサーバー内で実装されています。

[h] ストレージエンジン内ではなくサーバー内で実装されています。



User Comments
  Posted by Adrian Singer on January 26, 2008
More information about how to pick the best MySQL Storage engine for your real life scenario:

http://www.softwareprojects.com/resources/programming/t-mysql-storage-engines-1470.html
Sign Up Login You must be logged in to post a comment.