ホームページ  >  記事  >  データベース  >  MySQL の 2 つの主要なストレージ エンジンである InnoDB と MyISAM の違い

MySQL の 2 つの主要なストレージ エンジンである InnoDB と MyISAM の違い

一个新手
一个新手オリジナル
2017-09-30 10:28:011248ブラウズ

1.InnoDB ストレージ エンジン

InnoDB は MySQL5.5 のデフォルトのストレージ エンジンになります InnoDB は、大量の短期トランザクションを処理するように設計されたトランザクション ストレージ エンジンです。そのパフォーマンスと自動クラッシュ回復機能により、非トランザクション シナリオでも人気があります。

したがって、次のように言うことができます。「 InnoDB にない機能を使用する必要があり、それを置き換える他の方法がない場合を除き、InnoDB を優先する必要があります」。

InnoDB データはテーブルスペースに保存され、各テーブルのデータとインデックスを別のファイルに保存できます。

InnoDB は MVCC を使用して高い同時実行性をサポートし、4 つの標準分離レベルを実装します。デフォルトのレベルは REPEATABLE READ (反復可能読み取り) であり、ギャップ ロック戦略によりファントム読み取りが防止されます。

InnoDB はクラスター化インデックスに基づいて構築されており、主キー クエリに対して高いパフォーマンスを発揮します。

InnoDB は、XtraBackup ツールを通じて実現できる真のホット バックアップをサポートしています。

InnoDB は、ディスクからデータを読み取る際の予測可能な先読み、メモリ内にハッシュ インデックスを自動的に作成する機能、挿入操作を高速化できる挿入バッファーなど、多くの内部最適化を行いました。

アプリケーションシナリオ : オンラインホットバックアップが必要です

データ量が多く、システム崩壊後にシステムを迅速に回復する必要があります。注文処理など。

2.MyISAM ストレージ エンジンMySQL5.1 より前は、MyISAM がデフォルトのストレージ エンジンでした。 MyISAM はトランザクションと行レベルのロックをサポートしておらず、その最大の欠点はクラッシュ後に安全に回復できないことです。

.MyISAM は、テーブルをデータ ファイルとインデックス ファイルの 2 つのファイルに保存します。

MyISAM はテーブル全体をロックし、読み取り時に必要なすべてのテーブルに共有ロックを追加し、書き込み時に排他ロックを追加します。ただし、テーブルに読み取りクエリがある場合は、テーブルに新しいレコードを挿入することもできます (同時挿入)

MyISAM はチェックと修復操作を手動または自動で実行できますが、データ損失が発生する可能性があり、修復操作は非常に遅くなります。

MyISAM テーブル内の BLOB や TEXT などの長いフィールドでも、最初の 500 文字に基づいてインデックスを作成できます。 MyISAM は、単語の分割に基づいて作成されたインデックスである全文インデックス作成もサポートしており、複雑なクエリをサポートできます。

テーブルの作成時に MyISAM が DELAY_KEY_WRITE (インデックス キーの遅延更新) を指定した場合、インデックスは各変更が完了したときにメモリ内のキー バッファに書き込まれます。キー バッファがクリアされるか、またはクリアされるまで、対応するキー バッファは書き込まれません。テーブルが閉じられると、インデックス ブロックがディスクに書き込まれ、書き込みパフォーマンスが大幅に向上します。ただし、データベースまたはホストがクラッシュすると、インデックスが破損する可能性があります。

アプリケーション シナリオ

: は、一般的なログ タイプのアプリケーションなど、主に SELECT および Insert 操作です。

以上がMySQL の 2 つの主要なストレージ エンジンである InnoDB と MyISAM の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。