Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


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

このページは機械翻訳したものです。

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

ストレージエンジンは、さまざまなテーブル型に対する SQL 操作を処理する MySQL コンポーネントです。 InnoDB はデフォルトでもっとも汎用のストレージエンジンであり、Oracle は、特別なユースケースを除くテーブルについては、このエンジンの使用を推奨します。 (デフォルトでは、MySQL 8.0 の 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 ストレージエンジンのユースケースについて説明します。 第15章「InnoDB ストレージエンジンおよび 第23章「MySQL NDB Cluster 8.0で説明するデフォルトの InnoDB ストレージエンジンまたは NDB ストレージエンジンについては説明しません。 上級ユーザーの場合は、プラガブルストレージエンジンアーキテクチャの説明も含まれています (セクション16.11「MySQL ストレージエンジンアーキテクチャーの概要」 を参照)。

商用 MySQL Server バイナリで提供される機能の詳細は、MySQL web サイトのMySQL エディションを参照してください。 使用可能なストレージエンジンは、使用している MySQL のエディションによって異なります。

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

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

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

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

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

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

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

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

  • NDB (NDBCLUSTER とも呼ばれる): このクラスタデータベースエンジンは、可能なかぎり高いアップタイムと可用性を必要とするアプリケーションに特に適しています。

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

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

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

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

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

MySQL が提供するさまざまなストレージエンジンは、異なるユースケースで使用されることを想定して設計されています。 次のテーブルに、MySQL で提供される一部のストレージエンジンの概要と、そのあとのノートを示します。

表 16.1 「ストレージエンジン機能のサマリー」

機能 MyISAM メモリー InnoDB アーカイブ NDB
B ツリーインデックス はい はい はい いいえ いいえ
MVCC いいえ いいえ はい いいえ いいえ
T ツリーインデックス いいえ いいえ いいえ いいえ はい
インデックスキャッシュ はい N/A はい いいえ はい
クラスタデータベースのサポート いいえ いいえ いいえ いいえ はい
クラスタ化されたインデックス いいえ いいえ はい いいえ いいえ
ストレージの制限 256TB RAM 64TB なし 384EB
データキャッシュ いいえ N/A はい いいえ はい
データディクショナリ向け更新統計 はい はい はい はい はい
トランザクション いいえ いいえ はい いいえ はい
ハッシュインデックス いいえ はい いいえ (note 1) いいえ はい
バックアップ/ポイントインタイムリカバリ (note 2) はい はい はい はい はい
レプリケーションのサポート (note 2) はい 制限付き (note 3) はい はい はい
ロック粒度 Table Table
全文検索インデックス はい いいえ はい (note 4) いいえ いいえ
圧縮データ はい (note 5) いいえ はい はい いいえ
地理空間インデックスのサポート はい いいえ はい (note 6) いいえ いいえ
地理空間データ型のサポート はい いいえ はい はい はい
外部キーのサポート いいえ いいえ はい いいえ はい (note 7)
暗号化データ はい (note 8) はい (note 8) はい (note 9) はい (note 8) はい (note 8)

Notes:

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

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

3. このセクションの後半の説明を参照してください。

4. FULLTEXT インデックスに対する InnoDB サポートは、MySQL 5.6 以降で使用できます。

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

6. InnoDB での地理空間インデックス付けのサポートは、MySQL 5.7 以降で使用できます。

7. 外部キーのサポートは、MySQL Cluster NDB 7.3 以降で使用できます。

8. 暗号化機能を介してサーバーに実装されます。

9. 暗号化機能を介してサーバーに実装されます。MySQL 5.7 以降では、保存データのテーブルスペース暗号化がサポートされます。