MySQL プラガブルストレージエンジンは、データベースに対して実データの I/O 操作を行なったり、特定のアプリケーションニーズを対象とする機能セットを有効にしたり適用したりする役割を担う、MySQL データベースサーバーのコンポーネントです。特定のストレージエンジンを使用する主なメリットは、特定のアプリケーションに必要な機能だけが配布されるため、データベースのオーバーヘッドが小さくなり、データベースパフォーマンスが効率的になり向上します。これは、MySQL がこのように高パフォーマンスであると以前から知られてきた理由の 1 つであり、業界標準ベンチマークで独占的な地位を占める強力なデータベースに匹敵または対抗できる要因になっています。
技術的に見て、ストレージエンジンを支える独自のインフラストラクチャー要素は何でしょうか。機能を差別化している主な要素は次のとおりです。
並列性: いくつかのアプリケーションは、ほかのアプリケーションよりさらに粒度の細かいロック要件 (低レベルロックなど) を持ちます。適切なロック方式を選択すると、オーバーヘッドが低減されるため、全体のパフォーマンスが向上します。また、この分野はマルチバージョンの並列処理制御や「スナップショット」の読み込みのような機能もサポートします。
トランザクションサポート: 必ずしもすべてのアプリケーションがトランザクションを必要としていませんが、必要な場合、ACID 準拠などの非常に明確な要件があります。
参照整合性: サーバーは DDL 定義の外部キーでリレーショナルデータベースの参照整合性を適用する必要があります。
物理ストレージ: これには、テーブルとインデックスの全体ページサイズやデータの物理ディスクへの格納に使用されるフォーマットのすべてが関係します。
インデックスサポート: アプリケーションシナリオによっては、別のインデックス方式からメリットが得られる傾向があります。通常、各ストレージエンジンには独自のインデックス方式がありますが、ほぼすべてのエンジンに共通の方式 (B ツリーインデックスなど) もあります。
メモリーキャッシュ: アプリケーションによってはあるメモリーキャッシュ方式の方がほかより応答が良いものがあり、あるメモリーキャッシュはすべてのストレージエンジンに共通だけれども (ユーザー接続または MySQL の高速クエリーキャッシュに使用されるものなど)、特定のストレージエンジンが動作するときにのみ独自に定義されるものもあります。
パフォーマンスエイド: これには、並列操作用のマルチ I/O スレッド、スレッド並列処理、データベースチェックポイント、大量の挿入処理などが含まれます。
その他のターゲット機能: これには、地理空間操作、データ操作のセキュリティー面の制限事項、およびその他の類似機能に対するサポートが含まれます。
プラガブルストレージエンジンの各インフラストラクチャーコンポーネントセットは、特定のアプリケーション向けの利点を提供できるように設計されています。反対に、あるコンポーネント機能セットを回避することは、不必要なオーバーヘッドを削減するのに役立ちます。特定アプリケーションの要件セットを理解して、適切な MySQL ストレージエンジンを選択することは、当然のことながらシステム全体の効率とパフォーマンスに大きな影響を与える可能性があります。