ホームページ  >  記事  >  データベース  >  MySQL にはストレージ エンジンがいくつありますか?

MySQL にはストレージ エンジンがいくつありますか?

云罗郡主
云罗郡主オリジナル
2019-01-22 15:59:394067ブラウズ

次のコマンドを実行して、すべての mysql ストレージ エンジンを表示します [推奨チュートリアル: MySQL チュートリアル ]

MySQL にはストレージ エンジンがいくつありますか?

InnoDB ストレージ エンジン

InnoDB はトランザクション データベースに推奨されるエンジンであり、トランザクション セキュリティ テーブル (ACID)、行ロック、および外部キーをサポートしています。 InnoDB の主な機能は次のとおりです:

1. InnoDB は、コミット、ロールバック、およびクラッシュ回復機能を備えたトランザクションセーフ (ACID 互換) ストレージ エンジンを MySQL に提供します。 InnoDB は行レベルでロックし、SELECT ステートメントで Oracle のような非ロック読み取りも提供します。これらの機能により、マルチユーザーの展開とパフォーマンスが向上します。 SQL クエリでは、同じクエリ内であっても、InnoDB タイプのテーブルと他の MySQL テーブル タイプを自由に組み合わせることができます。InnoDB は、大量のデータを処理する際に最大のパフォーマンスを発揮するように設計されています。その CPU 効率は、他のディスクベースのリレーショナル データベース エンジンのロックに匹敵しない可能性があります。

3. InnoDB ストレージ エンジンは、MySQL サーバーと完全に統合されており、メイン メモリにデータとインデックスをキャッシュするために維持されます。 . 独自のバッファプール。 InnoDB は、テーブルとインデックスを論理テーブル スペースに配置します。論理テーブル スペースには、複数のファイル (または RAW ディスク ファイル) を含めることができます。これは、各テーブルが別個のファイルに保存される MyISAM テーブルとは異なります。 InnoDB テーブルは、ファイル サイズが 2GB

4 に制限されているオペレーティング システムであっても、任意のサイズにすることができます。 InnoDB は、テーブルにデータを保存するときに、各テーブルがプライマリに従って保存されます。シーケンシャル ストレージ。テーブル定義で主キーが指定されていない場合、InnoDB は行ごとに 6 バイトの ROWID を生成し、それを主キーとして使用します。

#5 InnoDB は多くの大規模なデータベースで使用されます。高いパフォーマンスを必要とする

InnoDB はサイトにディレクトリを作成しません。InnoDB を使用すると、MySQL は ibdata1 という名前の 10 MB の自動拡張データ ファイルと、ib_logfile0 および ib_logfile1 という名前の 2 つの 5 MB のデータ ファイルを MySQL データ ディレクトリに作成します。

MyISAM ストレージ エンジン

MyISAM は ISAM ストレージ エンジンをベースにしており、それを拡張しています。これは、Web、データ ウェアハウジング、その他のアプリケーション環境で最も一般的に使用されるストレージ エンジンの 1 つです。 MyISAM は挿入速度とクエリ速度が速いですが、トランザクションはサポートしていません。 MyISAM の主な機能は次のとおりです:

1. 大きなファイル (最大 63 ビットのファイル長) は、削除時と更新時に、ファイル システムおよびオペレーティング システムでサポートされます。また、動的なサイズの行を挿入すると、操作が混在する場合でも断片化が少なくなります。これは、隣接する削除されたブロックをマージすることによって自動的に行われ、次のブロックが削除された場合は、次のブロック

3 まで拡張されます。各 MyISAM テーブルのインデックスの最大数は 64 であり、変更を再コンパイルすることで達成できます。 。インデックスあたりの最大カラム数は 16

4 で、最大キー長は 1000 バイトです。これは、250 バイトを超えるキー長の場合、1024 バイトを超えるキーになります。使用されます

5。BLOB および TEXT 列にはインデックスを付けることができます。

6。この値は、各キーに対して 0 ~ 1 バイトを占有します。すべての数値キー値は、より高いインデックス圧縮を可能にするために最初に上位バイトに格納されます。

#8 各 MyISAM タイプのテーブルには AUTO_INCREMENT 内部列があり、この列は INSERT および UPDATE 操作中に更新されます。列が更新されます。したがって、MyISAM タイプのテーブルの AUTO_INCREMENT 列は、InnoDB タイプの AUTO_INCREMENT よりも速く更新されます。

9 データ ファイルとインデックス ファイルを別のディレクトリに配置できます。各文字列には異なる文字セットを含めることができます。

11. VARCHAR を含むテーブルには、固定レコード長または動的レコード長を含めることができます。

12. VARCHAR 列および CHAR 列は最大 64KB

を使用できます。 MyISAM エンジンによりデータベースが 3 つ生成されます。ファイルの名前はテーブル名で始まり、拡張子はファイルの種類です。frm ファイル格納テーブル定義、データ ファイルの拡張子は です。 MYD (MYData)、インデックス ファイルの拡張子。 MYI (MYIndex)

MEMORY ストレージ エンジン

MEMORY ストレージ エンジンはテーブル内のデータをメモリに保存し、他のテーブル データのクエリや参照を行わずに高速アクセスを提供します。 MEMORY の主な機能は次のとおりです:

1. 各 MEMORY テーブルには最大 32 個のインデックス、インデックスあたり 16 個の列、および最大キー長 500 バイトを含めることができます。エンジンは HASH および BTREE マイクロコズムを実行します

3。MEMORY テーブルには一意でないキー値を含めることができます

#4。MEMORY テーブルは固定レコード長形式を使用します

##。 #5、MEMORY は BLOB または TEXT 列をサポートしません

6、MEMORY は AUTO_INCREMENT 列と、NULL 値を含めることができる列のインデックスをサポートします

7、MEMORY テーブルはすべてのクライアント間で共有されます (つまり、他の非 TEMPORARY テーブルと同様に)

8. MEMORY テーブルのメモリは、クエリ中にアイドル状態になっているときに、MEMORY テーブルとサーバーによって作成された内部テーブルの間で共有されます。 process

9 。 MEMORY テーブルの内容が不要になった場合、MEMORY テーブルによって使用されているメモリを解放するには、DELETE FROM または TRUNCATE TABLE を実行するか、テーブル全体を削除する必要があります (DROP TABLE を使用)。

ストレージ エンジンの選択

MySQL にはストレージ エンジンがいくつありますか?

送信、ロールバック、およびクラッシュ回復機能のためのトランザクション セキュリティ (ACID 互換性) 機能を提供し、同時実行制御が必要な場合は、InnoDB が良い選択です

データ テーブルが主にレコードの挿入とクエリに使用される場合、MyISAM エンジンはより高い処理効率を提供できます。

データが一時的に保存されるだけの場合、データ量は大きくなく、高いデータ セキュリティは必要ありません。では、データをメモリに保存するメモリ エンジンを選択できます。このエンジンは、クエリの中間結果を保存するために MySQL の一時テーブルとして使用されます。

INSERT 操作と SELECT 操作のみがある場合は、Archive を選択できます。 . アーカイブは、同時実行性の高い挿入操作をサポートしていますが、それ自体はトランザクション的に安全ではありません。 Archive は、アーカイブされたデータを保存するのに非常に適しています。たとえば、Archive

を使用してログ情報を記録することができます。データベース内の複数のテーブルは、さまざまなパフォーマンスに合わせて異なるエンジンを使用できます。実際のニーズに応じて、適切なストレージ エンジンを使用してください。データベース全体のパフォーマンスが向上します。


以上がMySQL にはストレージ エンジンがいくつありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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