MyISAM |
InnoDB |
|
それぞれの MyISAM はディスク上に 3 つのファイルを保存します。最初のファイル名はテーブル名で始まります。拡張子はファイルを示しますtype |
.frmファイル格納テーブル定義 データファイルの拡張子は.MYD(MYData)です インデックスファイルの拡張子は.MYI(MYIndex)です Disk-ベースのリソースは、InnoDB テーブル スペース データ ファイルとそのログ ファイルです。InnoDB テーブルのサイズは、オペレーティング システム ファイルのサイズによってのみ制限されます。通常は 2 GB です |
トランザクション処理 |
。 MyISAM タイプのテーブルはパフォーマンスを重視しており、その実行速度は InnoDB タイプよりも高速ですが、トランザクションのサポートは提供しません |
InnoDB はトランザクションを提供し、トランザクション、外部キー、その他の高度なデータベース機能をサポートします |
追加、削除、変更、クエリ操作 |
を実行する場合 多数の選択の場合は、MyISAM がより良い選択肢です | 1. パフォーマンス上の理由から、データに大量の挿入と更新を実行する必要がある場合は、次のようにする必要があります。 InnoDB テーブルを使用します2. テーブルから削除する場合、InnoDB は再作成されませんが、行ごとに削除されます | 3. 解決策は、最初に InnoDB を変更することです。 InnoDB テーブルを MyISAM テーブルに変換し、データをインポートしてから InnoDB テーブルに変更します。ただし、InnoDB 機能 (外部キーなど) を使用するテーブルには適用されません 主キーの自動インクリメントの操作 |
テーブルごとの auto_increment カラムの内部処理MyISAM は挿入および更新操作のために自動的に実行されます このカラムを更新すると、主キーカラムが高速化されます (最低 10%) | auto_increment は alter と myisamchk によってリセットできます 型のフィールドの場合 auto_increment、InnoDB にはそのフィールドのみのインデックスが含まれている必要がありますが、myisam テーブルの場合は、他のフィールドを含む first-sum インデックスを作成できます auto_increment の処理がより良く、より高速になります テーブルの場合、データ ディクショナリの InnoDB テーブル ハンドルには、カラムに新しい値を割り当てるために使用される Counter と呼ばれる auto_increment カウンターが含まれています。 |
自動インクリメントカウンターはディスクではなくメインメモリにのみ保存されます
テーブル内の特定の行数 |
InnoDB はテーブル内の特定の行数を保存しません。つまり、テーブルから select count(*) を実行します。テーブル全体をスキャンして行数を計算する必要があります | Lock |
|
は行ロックを提供し、ロックフリーを提供しますさらに、InnoDB テーブルの行ロックは絶対的ではありません。Mysql が SQL ステートメントの実行時にスキャン範囲を決定できない場合、InnoDB はテーブル全体をロックします | B+tree | |
b-tree または btree |
上記では、関連する側面を含め、MyISAM と InnoDB の違いを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。 |