著者: limeinan
MySQL プラグイン ストレージ エンジンは、データベースに対する実際のデータ I/O 操作の実行を担当する MySQL データベース サーバーのコンポーネントであり、アプリケーションの特殊なニーズに合わせて特定の機能セットを許可および強制できます。特殊なストレージ エンジンを使用する主な利点の 1 つは、特定のアプリケーションに必要な機能のみが提供されるため、データベースのシステム オーバーヘッドが少なくなり、最終的にはデータベースの効率が向上し、パフォーマンスが向上することです。これが、MySQL が業界標準のベンチマークで独自のモノリシック データベースに匹敵する、またはそれを上回る高性能であると一貫してみなされている理由の 1 つです。
技術的な観点から見ると、基礎となる構造をサポートするストレージ エンジンの固有のコンポーネントにはどのようなものがありますか?主な違いは次のとおりです。
· 同時実行性: 一部のアプリケーションには、他のアプリケーションよりも詳細なレベルのロック要件 (行レベルのロックなど) があります。適切なロック戦略を選択すると、オーバーヘッドが削減され、全体的なパフォーマンスの向上に役立ちます。また、マルチバージョン同時実行制御や「スナップショット」読み取りなどの機能のサポートも含まれています。
·トランザクションのサポート: すべてのアプリケーションがトランザクションを必要とするわけではありませんが、トランザクションを必要とするアプリケーションについては、ACID 互換性など、明確に定義された要件があります。
·参照整合性: DDDL で定義された外部キーを通じて、サーバーは関連するデータベースの参照整合性を強制する必要があります。
· 物理ストレージ: これには、テーブルとインデックスの合計ページ サイズから、物理ディスクへのデータの保存に必要な形式まで、さまざまな情報が含まれます。
· インデックスのサポート: アプリケーションごとに異なるインデックス作成方法が採用される傾向があります。通常、各ストレージ エンジンには独自のインデックス作成方法がありますが、一部のインデックス作成方法 (B ツリー インデックスなど) はほぼすべてのストレージ エンジンに共通です。
メモリ キャッシュ: アプリケーションによっては、特定のメモリ キャッシュ戦略に対して他のアプリケーションよりもよく応答するため、一部のメモリ キャッシュはすべてのストレージ エンジンに共通ですが (たとえば、ユーザー用の Connection のキャッシュ、MySQL の高速クエリ キャッシュなど)、他のキャッシュ戦略は定義されているだけです。特別なストレージ エンジンを使用する場合に特有の効果があります。
·パフォーマンス支援: 並列操作のための複数の I/O スレッド、スレッドの同時実行、データベース チェックポイント、バッチ挿入処理など。
·その他の対象機能: 地理空間操作のサポート、特定のデータ処理操作に対するセキュリティ制限などが含まれる場合があります。
プラグイン ストレージ エンジンの基本コンポーネントの各セットは、特定のアプリケーション向けに選択可能な機能セットを提供するように設計されています。逆に、コンポーネント属性のコレクションを回避すると、不必要なオーバーヘッドを回避できます。したがって、特定のアプリケーションの要件セットを理解し、システム全体の効率とパフォーマンスを大幅に向上できる適切な MySQL ストレージ エンジンを選択する必要があることは明らかです。