Chapter 16 Alternative Storage Engines

ストレージエンジンは、異なるテーブルタイプの SQL 操作を処理する MySQL コンポーネントです。 InnoDB はデフォルトで最も汎用的なストレージエンジンで、オラクルは特殊なユースケースを除いてテーブルにこれを使用することを推奨しています。 (MySQL 8.0 の CREATE TABLE ステートメントはデフォルトで InnoDB テーブルを作成します。)

MySQL Server はプラグ可能なストレージ エンジン アーキテクチャを使用しており、ストレージ エンジンを実行中の MySQL Server にロードしたりアンロードしたりすることが可能になっています。

サーバーがサポートするストレージ エンジンを決定するには、SHOW ENGINESステートメントを使用します。 Support 列の値は、エンジンが使用可能かどうかを示します。 YESNO、または DEFAULT の値は、エンジンが使用可能、使用不可、または使用可能で現在デフォルトのストレージ・エンジンとして設定されていることを表します。

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: 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 engineTransactions: NO XA: NO Savepoints: NO...

この章では、特別な目的の MySQL ストレージ エンジンのユースケースについて説明します。 デフォルトの InnoDB ストレージエンジンや、「15章 InnoDB ストレージエンジン」および「23章 MySQL NDB Cluster 8.0」でカバーされている NDB ストレージエンジンは対象外です。 上級ユーザ向けには、プラガブルストレージエンジンアーキテクチャの説明も含まれています(「MySQL ストレージエンジンアーキテクチャの概要」 を参照)。

商用 MySQL サーバ バイナリで提供される機能については、MySQL ウェブサイトの 「MySQL Editions」 を参照してください。 利用可能なストレージ エンジンは、使用している MySQL のエディションによって異なる場合があります。

MySQL ストレージ エンジンに関するよくある質問については、「MySQL 8.0 FAQ」 を参照してください。

MySQL 8.0 Supported Storage Engines

  • InnoDB: MySQL 8.0 のデフォルトストレージエンジンです。 InnoDB は MySQL 用のトランザクションセーフ (ACID 準拠) ストレージエンジンで、コミット、ロールバック、クラッシュリカバリの機能を持ち、ユーザーデータを保護します。 InnoDB は行レベルのロック(粗い粒度のロックへのエスカレーションなし)と Oracle スタイルの一貫したノンロックリードにより、マルチユーザ同時実行性とパフォーマンスを向上させます。 InnoDB はユーザーデータをクラスタ化されたインデックスに格納し、主キーに基づく一般的なクエリでの I/O を削減します。 データの整合性を保つために、InnoDBFOREIGN KEY 参照整合性制約もサポートしています。 InnoDB の詳細については、第15章 InnoDB Storage Engine を参照してください。

  • MyISAM: これらのテーブルはフットプリントが小さいです。 テーブルレベルのロックは、読み取り/書き込みワークロードでのパフォーマンスを制限するので、Webやデータウェアハウスの構成で読み取り専用または読み取り中心のワークロードでよく使用されます。

  • Memory: すべてのデータを RAM に保存し、重要でないデータの迅速な検索を必要とする環境での高速アクセスを可能にする。 このエンジンは以前は HEAP エンジンとして知られていました。 バッファプールメモリ領域を持つ InnoDB は、ほとんどあるいはすべてのデータをメモリ内に保持する汎用的で耐久性のある方法を提供し、NDBCLUSTER は巨大な分散データセットに対して高速なキーバリュー検索を提供するもので、その使用例は減少している。

  • CSV: テーブルはカンマ区切りのテキストファイルである。 CSV テーブルは、CSV 形式のデータをインポートまたはダンプして、同じ形式を読み書きするスクリプトやアプリケーションとデータを交換することができます。 CSVテーブルにはインデックスがないため、通常、通常の運用ではデータをInnoDBテーブルに保存し、インポートまたはエクスポートの段階でのみCSVテーブルを使用します。

  • Archive: このコンパクトでインデックスのないテーブルは、あまり参照されない大量の履歴、アーカイブ、またはセキュリティ監査情報を保存および検索することを目的としています。

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

  • NDBNDBCLUSTERとしても知られている)。 このクラスタ化されたデータベース・エンジンは、特に最高度のアップタイムと可用性を必要とするアプリケーションに適している。

  • Merge: MySQL DBA または開発者は、一連の同一の MyISAM テーブルを論理的にグループ化して、1 つのオブジェクトとして参照できるようにします。 データウェアハウスのような VLDB 環境に適しています。

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

  • Example: このエンジンは、新しいストレージエンジンを書き始める方法を説明する MySQL ソースコードの例として使用されます。 これは主に開発者が興味を持つものです。 このストレージエンジンは、何もしない「スタブ」です。 このエンジンでテーブルを作成することはできますが、その中にデータを格納したり、そこから取得したりすることはできません。

サーバまたはスキーマ全体で同じストレージ エンジンを使用するよう制限されているわけではありません。 任意のテーブルに対してストレージ エンジンを指定することができます。 たとえば、アプリケーションでは主に InnoDB テーブルを使用し、1 つの CSV テーブルはデータをスプレッドシートにエクスポートするため、いくつかの MEMORY テーブルは一時的なワークスペースに使用するといったことが可能です。

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

MySQL で提供されるさまざまなストレージ エンジンは、さまざまな使用ケースを想定して設計されています。 次の表は、MySQL で提供されるいくつかのストレージ エンジンの概要を提供し、表の後に明確な注記を記載しています。1 ストレージエンジン機能概要

の場合。

機能 MyISAM メモリ InnoDB アーカイブ NDB
B->
MyISAM MyInnode MyISAM MyInnode Yes Yes No No
バックアップ/ポイント・イン・ポイント Yes Yes No Ye Ye はい はい はい はい
クラスタデータベース対応 いいえ いいえ No NOYes
Clustered indexes No Yes No No
圧縮データ あり(注2) No YesYes No
データキャッシュ No N/A Yes No Yes
暗号化データ Yes(note 3) Yes(note 3)はい(注4) はい(注3) はい(注3)
外部キーサポート いいえ はい いいえ はい(注5)
フル-。テキスト検索インデックス Yes No Yes(注6) No
Geospatial データ型サポート Yes No Yes Yes
地理空間インデックス作成 サポート Yes No Yes(注7) No
Hash Indexes No Yes No(注8) Yes
インデックス・キャッシュ Yes N/A Yes No Yes
Locking granularity Table Row Row Row
MVCC No Yes No レプリケーション対応(注1) あり 制限付き(注9) あり あり
ストレージ制限 256TB RAM 64TB None 384EB
T-を使用。ツリーインデックス No No Yes
トランザクション No Yes No Yes
Update statistics for data dictionary Yes Yes

Notes.Netscape

Yes Yes Yes

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

2. 圧縮された MyISAM テーブルは、圧縮行形式を使用する場合のみサポートされます。 MyISAM で圧縮行形式を使用するテーブルは読み取り専用です。

3. 暗号化関数によりサーバーに実装されます。

4. 暗号化関数によりサーバーに実装されます。MySQL 5.7 以降では、データアットレスト暗号化をサポートします。 外部キーのサポートは MySQL Cluster NDB 7.3 以降で利用可能。

6. FULLTEXT インデックスのサポートは MySQL 5.6 以降で利用可能。

7. 地理空間インデックスのサポートは MySQL 5.7 以降で利用可能。 このセクションの後の議論を参照してください。

9.

コメントを残す

メールアドレスが公開されることはありません。