MySQL を使用する場合に最も一般的に使用される 2 つのテーブル タイプは、InnoDB と MyISAM です。それぞれには、特定のアプリケーションに応じて、独自の長所と短所があります。基本的な違いは、MyISAM タイプはトランザクション処理などの高度な処理をサポートしていないのに対し、InnoDB タイプは
をサポートしています。MyISAM タイプのテーブルはパフォーマンスを重視しており、その実行時間は InnoDB タイプよりも高速ですが、トランザクション サポートは提供しません。一方、InnoDB はトランザクションを提供し、外部キーなどの高度なデータベース機能をサポートします。
MyIASM は、次の拡張機能を備えた IASM テーブルの新しいバージョンです:
バイナリ レベルの移植性。
NULL 列 インデックス 。
可変長行の ISAM テーブルよりも断片化が少ない。
大きなファイルをサポートします。
インデックス圧縮の改善。
キーの統計的分散の改善。
auto_increment 処理の改善と高速化。
以下は詳細と具体的な実装の違いです:
1.InnoDB は FULLTEXT タイプのインデックスをサポートしません。
2. InnoDB はテーブル内の特定の行数を保存しません。つまり、テーブルから select count(*) を実行するとき、InnoDB はテーブル全体をスキャンして行数を計算する必要がありますが、MyISAM はテーブル全体をスキャンする必要があります。単純に読み取って保存するだけで十分です。 count(*) ステートメントに where 条件が含まれている場合、2 つのテーブルの操作は同じであることに注意してください。
3. タイプ AUTO_INCREMENT のフィールドの場合、InnoDB にはこのフィールドのみのインデックスが含まれている必要がありますが、MyISAM テーブルでは他のフィールドとの結合インデックスを確立できます。
4. テーブルから DELETE を実行すると、InnoDB はテーブルを再作成せず、行ごとに 削除 します。
5. LOAD TABLE FROM MASTER 操作は InnoDB では機能しません。解決策は、まず InnoDB テーブルを MyISAM テーブルに変更し、データをインポートした後に InnoDB テーブルに変更することです (外部キーなど)が使用されている場合、表は適用されません。
さらに、InnoDB テーブルの行ロックは絶対的ではありません。MySQL が SQL ステートメントの実行時にスキャンする範囲を決定できない場合、InnoDB テーブルはテーブル全体もロックします (たとえば、テーブル セット num=1 を更新します)。 「%aaa %」のような名前
ビジネスの種類に応じて適切なテーブル タイプを選択することによってのみ、MySQL のパフォーマンス上の利点を最大化することができます。
以上がMySQL InnoDB と MyISAM データ エンジンの違いの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。