Summary: このチュートリアルでは、さまざまな MySQL ストレージ エンジンまたはテーブル タイプを学習します。 MySQL の各ストレージ エンジンの機能を理解することは、データベースのパフォーマンスを最大化するためにそれらを効果的に使用するために不可欠です。
MySQL は、以下のようにさまざまなストレージ エンジンをテーブルに提供しています:
- MyISAM
- InnoDB
- MERGE
- MEMORY (HEAP)
- ARCHIVE
- CSV
- FEDERATED
それぞれのストレージ エンジンには利点と欠点があります。 データベースのパフォーマンスを最大化するためには、それぞれのストレージ エンジンの特徴を理解し、テーブルに最も適したものを選択することが非常に重要です。 以下のセクションでは、どのストレージ エンジンを使用するかを決定できるように、各ストレージ エンジンとその機能について説明します。
MyISAM
MyISAM は、以前の ISAM ストレージ エンジンを拡張したものです。 MyISAMテーブルは、圧縮と速度のために最適化されています。 また、MyISAM テーブルはプラットフォームとオペレーティング・システム間で移植可能です。
MyISAM テーブルのサイズは最大 256TB で、これは巨大です。 さらに、MyISAM テーブルは、スペースを節約するために読み取り専用テーブルに圧縮することができます。 起動時に MySQL は MyISAM テーブルの破損をチェックし、エラーが発生した場合は修復も行います。 MyISAM テーブルはトランザクションセーフではありません。
MySQL バージョン 5.5 以前では、ストレージエンジンを明示的に指定せずにテーブルを作成すると、MyISAM がデフォルトのストレージエンジンとなります。 バージョン 5.5 以降、MySQL は InnoDB をデフォルトのストレージ エンジンとして使用します。
InnoDB
InnoDB テーブルは、ACID-compleant およびトランザクションを完全にサポートします。 また、パフォーマンスの面でも最適です。 InnoDBテーブルは、外部キー、コミット、ロールバック、ロールフォワード操作をサポートします。 InnoDB テーブルのサイズは最大 64TB です。
MyISAM と同様に、InnoDB テーブルは異なるプラットフォームとオペレーティング システム間で移植可能です。 MySQL はまた、起動時に必要に応じて InnoDB テーブルをチェックし、修復します。
MERGE
MERGE テーブルは、構造が似ている複数の MyISAM テーブルを 1 つのテーブルに結合した仮想テーブルです。 MERGE ストレージ エンジンは、MRG_MyISAM
エンジンとも呼ばれます。 MERGE
テーブルは独自のインデックスを持たず、代わりにコンポーネント テーブルのインデックスを使用します。
MERGE テーブルを使用すると、複数のテーブルを結合するときにパフォーマンスを高速化することができます。 MySQL では、MERGE
テーブルに対して SELECT、DELETE、UPDATE、および INSERT 操作を実行することだけが可能です。 MERGE
テーブルに対してDROP TABLE
ステートメントを使用した場合、MERGE
の指定のみが削除されます。
Memory
メモリテーブルはメモリに格納され、ハッシュインデックスを使用するため、MyISAMテーブルより高速です。 メモリテーブルのデータの寿命は、データベースサーバーの稼働時間に依存します。
Archive
アーカイブストレージエンジンは、アーカイブを目的とした大量のレコードを、ディスクスペースを節約するために圧縮された形式で保存することを可能にします。 アーカイブ・ストレージ・エンジンは、レコードが挿入されるときに圧縮し、読み込まれるときにzlibライブラリを使用して解凍します。
アーカイブ・テーブルでは、INSERTおよびSELECTステートメントのみが使用できます。 ARCHIVE
テーブルはインデックスをサポートしないため、行を読み込むには完全なテーブル スキャンが必要です。
CSV
CSV ストレージ エンジンは、カンマ区切り値 (CSV) ファイル形式のデータを格納します。 CSV テーブルは、表計算ソフトウェアなどの非 SQL アプリケーションにデータを移行する便利な方法をもたらします。
CSV テーブルは NULL データ型をサポートしません。 さらに、読み取り操作にはフル テーブル スキャンが必要です。
FEDERATED
FEDERATED
ストレージ エンジンは、クラスターまたはレプリケーション技術を使用せずに、リモート MySQL サーバーからデータを管理することができます。 ローカルのフェデレート テーブルはデータを保存しません。 ローカル連合テーブルからデータをクエリすると、データは自動的にリモート連合テーブルから引き出されます。
MySQL テーブル タイプの選択
次のチェックリストをダウンロードして、さまざまな基準に基づいて最適なストレージ エンジン、またはテーブル タイプを選択することができます。
MySQL ストレージ エンジンの機能概要
このチュートリアルでは、MySQL で利用できるさまざまなストレージ エンジンまたはテーブル タイプを学びました。