、ISAMとInnoDBの定義
1. MONTHLY
ISAMは、アカウントに回数を取るために、設計時にデータベースクエリの数が更新よりもはるかに大きい明確に定義された時間にテストされたデータ管理テーブル、です。したがって、ISAM速度読み出し動作が素早く行われ、メモリおよびストレージリソースの多くを取ることはありません。
ISAM二つの主な欠点は、それがトランザクションをサポートしていないということであるフォールトトレラントすることはできません。ハードドライブがクラッシュした場合、データファイルを復元することはできません。
あなたは、それは常にその複製機能を通じて、リアルタイムですべてのデータをバックアップする必要があり、ミッションクリティカルなアプリケーションで使用されるISAMある場合、MySQLは、このようなバックアップアプリケーションをサポートすることができます。
1.2 InnoDBの
これは、正常に実行されたコマンドセットのすべて、またはコマンドエラーがすべてのコマンドがロールバックされているすべての結果が発生したとき、あなたは電子バンキングのトランザクション制御に想像することができますが、非常に重要であることが保証され、トランザクション制御機能を提供します。、COMMITをサポートROLLBACK、および他のトランザクション機能を備えています。
最新バージョンのMySQLはBDBはInnoDBのの完全な発展の好意のためのサポートを削除することを計画していました。
二、IASMとMyIASM関係
:MyIASM IASMは、以下の拡張子を持つ、テーブルの新しいバージョンである
バイナリレベルのポータビリティ。
NULL列インデックス。
可変長ラインはISAMテーブル未満の破片を持っています。
大きなファイルのサポート。
より良いインデックス圧縮。
いっそのキーの統計的分布。
より良く、より早く治療をAUTO_INCREMENT。
第三に、さまざまなポイント
3.1、トランザクション処理
InnoDBのサポートトランザクション機能は、MyISAMテーブルは(など、外部キーを含む)をサポートしていません。
MyISAMの実行速度より速く、より良いパフォーマンス。
3.2、選択、更新、挿入、削除操作
MyISAMテーブル:あなたはSELECTの多くを行う場合は、MyISAMテーブルがより良い選択であります
InnoDBは:あなたは、パフォーマンス上の理由から、データのINSERTまたはUPDATEの多数を実行する場合は、InnoDBテーブルを使用する必要があります
3.3、異なるロック機構
InnoDBの行レベルのロック、MyISAMテーブルレベルのロック。
注:データベースが決定できない場合には、行を探している、テーブル全体をロックになるであろう。
例えば:更新テーブルセットNUM = 10ここで、 「%テスト%」のようにユーザ名;
3.4、ルックアップテーブル内の行の数が異なります
MyISAMテーブル:テーブルからSELECT COUNT(*)は、MyISAMテーブルは、単に良い行数を読み出して、COUNT(*)ステートメントは、操作の2種類が同じテーブルで条件が含まれている場合、ことに留意されたいです
InnoDBは:テーブル内の行の特定の数は、InnoDBは保存されていないテーブルから、InnoDBは再び行数を計算するために、テーブル全体をスキャンするとき、それは、SELECT COUNT(*)の実装であります
3.5、異なる物理的構造
MyISAMテーブル:ディスク上に3つのファイルに各MyISAMストレージ。拡張を開始するテーブルの最初のファイル名の名前は、ファイルの種類を示します。
.FRMファイルには、テーブルを記憶します。
.MYD(MYDATA)という名前の拡張データファイル。
拡張インデックスファイルには.MYI(MYIndex)であります
InnoDBは:ディスクベースのリソースは、通常は2ギガバイト、InnoDBのテーブルサイズは唯一のオペレーティング・システム・ファイルのサイズに制限され、InnoDBテーブルスペースのデータファイルと、ログファイルであります
3.6、異なるメカニズムanto_increment
より良く、より高速な処理AUTO_INCREMENT
3.7その他:
なぜ、MyISAMテーブルは、クエリの速度のInnoDBよりも速くなります。
;多くのMYISAMエンジンよりも維持するために何かをするときInnoDBが行うSELECT
1)データ・ブロック、キャッシュにINNODB、唯一のキャッシュインデックスMYISAMブロック、中央のスワップアウトすることがありますが減少する;
2)はInnoDBに対処マップしますブロックし、その後、ラインに、相殺するためには、ポジショニング速くINNODBよりも、直接MYISAMファイルレコードである
3)InnoDBはまた、一貫性のMVCCを維持する必要があります。ないシーンも、彼はまだチェックして維持する必要が
MVCC(マルチバージョン同時実行をコントロール)マルチバージョン並行性制御
のInnoDB:それはデータの行が満了したときにMVCCは各行レコード、データの次の行が作成されるときに、これら2つの値の記録、他のレコードのための2つの追加の隠れた値を加算することによって実現される(又は)削除されます。しかし、InnoDBはこれらのイベントが発生し、それが唯一のストレージ・システムのバージョン番号逆に、これらのイベントが発生した実際の時間を保存しません。これは、業務と成長の創出と数です。トランザクションは、独自のシステムのバージョン番号を始めたとき、各トランザクションが記録されます。各クエリは、バージョン番号のデータとトランザクションの各行にバージョン番号をチェックしなければならない同じです。:分離レベルがREPEATABLE READである場合、この戦略は、特定の操作に適用する方法である場合を見てみましょう
:SELECT InnoDBはデータの各行は、2つの条件満たしていることを確認する必要があり
、少なくともそれを、1は、InnoDBが行のバージョンを見つけなければならないしトランザクションと同じくらい古いを解放する(つまり、そのバージョン番号は、トランザクションのバージョン番号よりも大きくありません)。これは、トランザクションの開始前に問題があること、またはラインデータがあるときにトランザクションがデータ・ラインを作成または変更されたときに保証します。
図2は、未定義またはトランザクションのバージョンよりも大きくなければならないデータのこの行のバージョンを削除します。これは、トランザクションが始まる前に何行が削除されていないことを保証します。