データベース ストレージ エンジンは、データベースの基盤となるソフトウェア組織です。データベース管理システム (DBMS) は、データ エンジンを使用してデータの作成、クエリ、更新、削除を行います。ストレージ エンジンが異なれば、ストレージ メカニズム、インデックス作成手法、ロック レベル、その他の機能も異なります。また、ストレージ エンジンが異なると、特定の機能を取得することもできます。
現在、さまざまなデータベース管理システムがさまざまなデータ エンジンをサポートしています。 MySql の中核はストレージ エンジンです。
ストレージ エンジン ビュー
MySQL は開発者にストレージ エンジンをクエリする機能を提供します。ここでは MySQL5.1 を使用しています。コマンド ライン ウィンドウで
SHOW ENGINES
コマンドを使用すると、MySQL で使用されるエンジンを表示できます。コマンドの出力は次のとおりです (Navicat Premium を使用しています):
MySQL がユーザーに、トランザクション セーフなテーブルを処理するエンジンやトランザクション セーフでないテーブルを持つエンジンなど、非常に多くのストレージ エンジンを提供していることがわかります。
データベースでデフォルトでどのエンジンが使用されているかを確認したい場合は、コマンド
SHOW VARIABLES LIKE 'storage_engine';
を使用できます。
MySQL では、サーバー全体で同じストレージ エンジンを使用する必要はなく、特定の要件に応じてテーブルごとに異なるストレージ エンジンを使用できます。 Support 列の値は、特定のエンジンが使用できるかどうかを示します。YES は使用できることを意味し、NO は使用できないことを意味し、DEFAULT はエンジンが現在のデフォルトのストレージ エンジンであることを意味します。
一般的に使用されるエンジンをいくつか見てみましょう。
1. Innodb
はトランザクションをサポートし、トランザクション セーフであり、行レベルのロックと外部キー制約を提供し、データとインデックスをバッファリングするためのバッファ プールを備えています。
適用可能なシナリオ: ACID トランザクション サポートによるトランザクション処理に使用され、大量の挿入および更新操作を実行するテーブルに適用されます。
2. MyISAM
トランザクション、外部キー制約、または行レベルのロックはサポートされていません。操作中にテーブル全体をロックする必要がありますが、テーブルは行数なので、select count(*) from tablename を実行すると、実行が特に高速になります。
該当するシナリオ: 非トランザクション テーブルの管理に使用され、高速取得機能と全文取得機能を提供します。ログ テーブルなど、多数の選択操作を含むテーブルに適しています。
3. MEMORY
メモリに存在する内容を使用してテーブルを作成します。各メモリは実際には 1 つのディスク ファイルにのみ対応します。メモリ上に存在するためメモリアクセス速度が非常に速く、エンジンはハッシュインデックスを使用しているため一度に位置を特定でき、Bツリーのようにルートノードからブランチノードまで検索する必要がありません。そのため、正確なクエリを実行するときはアクセス速度が非常に速くなりますが、「いいね!」などの正確な検索を行う場合、この種の範囲検索ではハッシュが機能しません。さらに、サービスがシャットダウンされると、テーブル内のデータはディスクに保存されないため失われます。
適用可能なシナリオ: 主に、内容があまり変更されないテーブル、または中間のルックアップ テーブルとして使用されます。データがディスクに書き込まれていないため、テーブルを更新するときは注意してください。サービスをシャットダウンする前に、データのストレージを考慮する必要があります
#4. MERGE
MERGE ストレージ エンジン MyISAM データ テーブルのグループは論理ユニットとして扱われるため、同時にクエリを実行できます。 MERGE データ テーブル構造を構成する MyISAM データ テーブルの各メンバーは、まったく同じ構造を持つ必要があります。各メンバー データ テーブルのデータ列は、同じ名前と型で同じ順序で定義する必要があり、インデックスも同じ順序で同じ方法で定義する必要があります。
MERGE データ テーブルでは、複数のクエリを発行せずに複数のデータ テーブルを同時に簡単に参照できることに加えて、次のような利便性も提供します。
MERGE データ テーブルを使用すると、各 MyISAM データ テーブルで許可される最大長を超えるサイズの論理ユニットを作成できます。
MERGE データ テーブルに含まれる圧縮データ テーブルを確認できます。 。たとえば、特定の年の終わり以降は、対応するログ ファイルにレコードを追加する必要がなくなるため、myisampack ツールを使用してログ ファイルを圧縮して領域を節約でき、MERGE データ テーブルは引き続き通常どおり機能します。
以上がMySQL エンジンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。