InnoDBテーブルとMyISAMの(ハイパフォーマンスMySQLのノート)との差

1は、InnoDBはトランザクションをサポートし、MyISAMテーブルがサポートされていない、それはMyISAMテーブルには、トランザクション・ロールバック操作をサポートしていないと言うことです、この関数は致命的なことができます

2は、InnoDBがのみサポート行ロック、MyISAMテーブルロックをサポートしていますが、InnoDBの行ロックは、インデックスがヒットしない場合、操作はまだテーブルロックに追いやられることを意味し、インデックスの上に構築されています。インデックスUIDについて

    = 10 UID = 1 t_userセット年齢を更新し、インデックス、行ロックを打ちます。

    インデックステーブルロックをミス;! t_userセット年齢= 10どこのuid = 1を更新します。

図3に示すように、InnoDBのテーブルが作成されるB +ツリーを使用してクラスタインデックスに基づいて、MyISAMテーブルは、非クラスタ化インデックスに基づいて、インデックスデータ構造は、B +ツリーであります

  クラスタ化インデックス:それは別のインデックス・タイプが、データストレージではありません。クラスタードインデックスは主キー、このインデックス値と同じ構造に行に格納されているすべてのデータの記憶に頼って確立されます。

インデックスが条件を満たしていない場合は、no主キー場合は、InnoDBは、代わりにインデックスのユニークな非空を選ぶだろう、暗黙のInnoDBは作成され、クラスタ化インデックスとして主キーを。また、セカンダリインデックスまたは2つのインデックスとして知られているInnoDBは、非クラスタ化インデックス、彼らは、行アドレスのデータここでは修正され、二列に格納されたインデックスポインタが指示されていませんが、OKの主キー!)葉ノードを見つけるために、メインエンジンが必要に格納されたデータの2本の線によってインデックスを見つけるために、すなわち、リーフノードB +ツリーを堆積させるために、二次インデックスに対応し、この値クラスタードインデックスに従ってキー対応するデータ行を見つけます。いくつかの更新されたデータは、行に表示されるテーブルの断片化につながることができ、元の場所に格納されるか、またはその場に残すことができないがあってもよいので、ここで繰り返し作業を行うので、検索するための少なくとも二倍B +ツリーを実行する(少なくとも、ありますこうして新たな位置へのポインタ、非クラスタ化インデックスは主キーのオブジェクトを見つけることができないかもしれません)。InnoDBのために、適応ハッシュインデックスは、このような繰り返し作業を軽減することができます。

したがって、クラスタ化インデックスは、IO集中型システムのために必須である大幅に性能を向上させることができます。すべてのデータがシステムメモリに保存されている場合でも、クラスタ化インデックスは何のメリットもないでしょう。ただし、クラスタ化インデックスには、また、いくつかの欠点、持ちすぎて窮屈列の物価指数を更新し、データの行全体が新しい場所へのインデックスと同様に、ページ分割の問題を追跡する必要がありました。

MyISAMストレージエンジンの場合、ファイルは以下の3つの形式が含まれています。

説明.FRMファイルテーブル構造  
.MYDは、テーブルデータファイルである  
.MYIテーブルのデータファイルは、任意のインデックスツリーデータであります

InnoDBは、同じファイル、.IDBのインデックスとデータの両方のために

 

4は、InnoDBがテーブル内の特定の行を保存していない、実行SELECT COUNT(*)はテーブルからフルテーブルスキャンが必要です。MyISAMテーブルだけで上記のステートメントを実行する変数を読んで、テーブル全体の行数を保持する変数を使用するには、非常に高速にすることができ

図5は、InnoDBのバージョンが5.7の後に、フルテキストインデックスをサポートするために始めた、とフルテキストインデックスがされているMyISAMテーブルをサポートしています

図6は、MyISAMテーブルは、圧縮テーブルの送信は、クエリ速度が大幅に改善され、圧縮をサポートしていますが、圧縮された状態でテーブルのみを抽出する前に、修正変更することはできません

7、InnoDBテーブルとMyISAMテーブルは、それはあなたがInnoDBはMyISAMテーブルで、テーブルに変身してから元に戻す場合は、外部キーが消え、と言うことです、外部キーのサポートをサポートしていません。

8は、InnoDBのテーブルには、(ユーザーが自分自身を見つけるか、暗黙の主キーを生成し、指定されていません)主キーを持っている必要がありますが、MyISAMテーブルできません


 

だから、両方の方法を選択するには?

  • あなたは、トランザクションおよびトランザクションのロールバック、InnoDBのが必要な場合は!
  • あなたは、MyISAMテーブルを作成するよりもはるかに多くを読めば! 
  • それでも分からない場合は、InnoDBはそれが、結局それは、メインプッシュ(デフォルト)メモリー・エンジンであります

 

最後に、ここでのInnoDBエンジンに言及4つの特性を AHI(挿入バッファ(挿入バッファ)、第2の書き込み(ダブル書き込み)、アダプティブハッシュインデックス:(リンクのブロガーを見ることができる学生を掘り下げたいです) )、先読み(先読み)

 

おすすめ

転載: www.cnblogs.com/ZoHy/p/11305269.html