1. InnoDB ストレージ エンジン
MySQL バージョン 5.5 以降、MySQL のデフォルトの組み込みストレージ エンジンすでに InnoDB となっており、その主な機能は次のとおりです:
(1) 災害復旧が比較的優れている;
(2) トランザクションをサポートします。デフォルトのトランザクション分離レベルは反復性であり、MVCC (同時バージョン管理) を通じて実装されます。
(3) 使用されるロック粒度は行レベルのロックであり、より高い同時実行性をサポートできます;
(4) 外部キーをサポートします;
(5) いくつかのホット バックアップ ツールを使用してオンライン ホット バックアップをサポートします;
(6) InnoDB にはバッファ管理があり、クエリを高速化するためにバッファ プールを通じてすべてのインデックスとデータがキャッシュされます;
(7) InnoDB タイプのテーブルの場合、データの物理的な構成形式はクラスタリングです。クラスターテーブル。すべてのデータは主キーに従って編成されます。データとインデックスはまとめられ、番号 B のリーフ ノードに配置されます;
2. MyISAM ストレージ エンジン
バージョン 5.5 より前では、MyISAM が MySQL のデフォルトのストレージ エンジンでした。トランザクションをサポートしているため、使用シナリオは比較的少ない 主な特徴は、
(1) トランザクションをサポートしていない;
(2) 外部キーをサポートしていない です。外部キー、エラーは表示されず、外部キーのみが追加されます。キーには機能がありません。
(3) データのクエリ キャッシュはインデックスのみをキャッシュし、InnoDB のようなデータはキャッシュしません。オペレーティング システム自体のキャッシュ;
(4) デフォルトのロック粒度はテーブル レベルのロックであるため、同時実行性は非常に低く、ロックは高速で、ロックの競合が少ないため、デッドロックが発生する可能性が低くなります。サポートされています)ただし、MySQL のフルテキスト インデックスは基本的には使用されません。フルテキスト インデックスについては、ElasticSearch、Solr、Sphinx などの他の成熟したソリューションがあります。
(6) データベースが配置されているホストがダウンすると、MyISAM データ ファイルは簡単に破損し、回復が困難になります;
はデータをメモリに保存し、Redis を使用します。 Memcached なども同様の考え方を持っており、データアクセスの高速化を図るため、主な機能としては、
(2) サポートされるロック粒度はテーブル レベルのロックです。したがって、アクセス量が比較的多い場合、テーブル レベルのロックが MEMORY ストレージ エンジンのボトルネックになります;
(3) データはメモリに保存されるため、サーバーの再起動後にすべてのデータが失われます。
(4 ) クエリ時に一時テーブルが使用され、一時テーブルに BLOB 型および TEXT 型のフィールドがある場合、一時テーブルは MyISAM 型テーブルに変換され、パフォーマンスが大幅に低下します。
#4. ARCHIVE ストレージ エンジン
( 1) Zlib 圧縮をサポートし、データはテーブルに挿入する前に最初に圧縮されます;
(3) 自動インクリメント キーのみをサポートします。インデックス、その他のインデックスはサポートされていません。
5. CSV ストレージ エンジン
(1 ) データ形式は .csv 形式のテキストで、直接編集できます 保存;
2. InnoDB と MyISAM の比較
4. クエリ パフォーマンスの点では、MyISAM のクエリ効率は InnoDB よりも高いです。クエリ プロセス中にデータ キャッシュを使用し、クエリ プロセスはまず行が配置されているデータ ブロックを検索し、次にデータ ブロック内で検索対象の行を配置します。MyISAM はデータが配置されているメモリ アドレスを直接配置できます。
5. SELECT COUNT(*) ステートメント、行数が数千万を超える場合、MyISAM はすぐにそれを見つけることができますが、MyISAM は行数を保存するため、InnoDB クエリが特に遅くなります。行を個別にカウントし、InnoDB では Zhu Xing が行数をカウントする必要があるため、InnoDB を使用していて行数をクエリする必要がある場合は、行数に対して次のような特別な処理を実行する必要があります: オフライン クエリとキャッシュ;
6. MyISAM のテーブル構造ファイルには、.frm (テーブル構造定義)、.MYI (インデックス)、.MYD (データ) が含まれますが、InnoDB のテーブル データ ファイルには、.ibd および .frm (テーブル構造定義) があります。
3. 適切なストレージ エンジンの選択方法
#1. 使用シナリオにトランザクション サポートが必要かどうか;
5. データの効率的なバッファリング InnoDB はデータとインデックスの両方をバッファリングしますが、MyISAM はのみをバッファリングしますバッファ インデックス;
6. インデックス、異なるストレージ エンジンのインデックスは同じではありません;
MySQL 関連の技術記事の詳細については、MySQL チュートリアル 列にアクセスして学習してください。
以上がMySQLストレージエンジンの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。