MySQL で一般的に使用される 4 つのストレージ エンジンは、MyISAM ストレージ エンジン、innoDB ストレージ エンジン、MEMORY ストレージ エンジン、および ARCHIVE ストレージ エンジンです。この記事では、これら 4 つのストレージ エンジンに焦点を当て、最後にこれら 4 つのストレージ エンジンを比較します。
MySQL のストレージ エンジン
1. ストレージ エンジン
1. ストレージ エンジンは、実際には、データを保存する方法と、保存されたデータにインデックスを付ける方法です。データの更新、クエリ、その他の技術的な実装方法。
2. MySQL のデータは、さまざまなテクノロジーを使用してファイル (またはメモリ) に保存され、それぞれが異なるストレージ メカニズム、インデックス技術、ロック レベルを使用し、最終的にはさまざまな機能と機能を提供します。 MySQL では、これらのさまざまなテクノロジとサポートされる関連機能をストレージ エンジンと呼びます。
2. MySQL でエンジンを表示します
1. show エンジン; // mysql でサポートされているストレージ エンジンを確認し、mysql のデフォルトのストレージ エンジンを取得します。
2. show 変数 like '% storage_engine'; // mysql のデフォルトのストレージ エンジンを表示します。
3. show create table tablename を表示します。
4. name="tablename" のデータベースからテーブルのステータスを表示します。 //データベース内のテーブルで使用されるストレージ エンジンを正確に表示します
3 つ。MySQL で一般的に使用されるいくつかのストレージ エンジン:
MyISAMストレージ エンジン: ストレージの場所: MySQL が MyISAM ストレージ エンジンを使用する場合、データベース ファイルの種類には .frm、.MYD、.MYI が含まれ、デフォルトのストレージの場所は C:Documentsand SettingsAll UsersApplication DataMySQLMySQL Server 5.1data
Storage です。メソッド: MyISAM は、トランザクションや行レベルのロックをサポートしないストレージ エンジンであり、同時に挿入されるテーブル ロックのみをサポートし、主に高負荷の選択に使用されます。
インデックスメソッド: MyISAM も B+tree インデックスを使用しますが、その具体的な実装は Innodb とは少し異なります。
このエンジンは ISAM データベース エンジンに基づいており、ISAM では利用できないインデックス作成やフィールド管理などの多数の機能を提供することに加えて、MyISAM は複数の同時読み取りおよび書き込み操作を最適化するテーブル ロック メカニズムも使用します。更新メカニズムによって浪費されたスペースを回復するには、OPTIMIZE TABLE コマンドを頻繁に実行する必要があります。そうしないと断片化が増加し、最終的にデータ アクセスのパフォーマンスに影響します。 MyISAM には、データベース ファイルを修復するための MyISAMChk ツールや、無駄な領域を回復するための MyISAMack ツールなど、いくつかの便利な拡張機能もあります。 MyISAM は高速な読み取り操作を重視しており、主に高負荷の選択に使用されます。これが、MySQL が Web 開発で非常に人気がある主な理由である可能性があります。Web 開発で実行されるデータ操作の多くは読み取り操作であるため、ほとんどの仮想ホスト プロバイダーはこのためです。およびインターネット プラットフォーム プロバイダー (インターネット プレゼンス プロバイダー、IPP) では、MyISAM 形式の使用のみが許可されます。
MyISAM タイプ テーブルは、静的、動的、圧縮の 3 つの異なるストレージ構造をサポートします。
静的型: 定義されたテーブル列のサイズが固定されていることを意味します (つまり、xblob、xtext、varchar などの可変長データ型が含まれていない)。そのため、MySQL は自動的に静的 MyISAM 形式を使用します。静的フォーマットを使用するテーブルのパフォーマンスは、所定のフォーマットで保存されたデータの維持とアクセスに必要なオーバーヘッドが非常に低いため、比較的高くなりますが、この高いパフォーマンスは、定義時に固定されるため、スペースを犠牲にします。列内の値がどれほど大きくても、最大値が優先され、スペース全体を占めます。
動的タイプ: 列が (列が 1 つしかない場合でも) 動的 (xblob、xtext、varchar およびその他のデータ型) として定義されている場合、MyISAM は自動的に動的タイプを使用しますが、動的タイプのテーブルが占有するスペースは少なくなります。静的型テーブルよりも優れていますが、フィールドの内容が変更されるとその位置を移動する必要が生じる可能性が高く、データの変更が増加するとフラグメントが生成されるため、パフォーマンスが低下します。フラグメントも増加し、それに応じてデータ アクセスのパフォーマンスが低下します。フラグメントの増加によるデータ アクセスの減少の問題には 2 つの解決策があります:
A. 削除によって失われたスペースをできるだけ静的データ型を使用します。ストレージ エンジンがテーブル table_name の最適化をサポートしていない場合は、データをダンプして再ロードすることで断片化を軽減することもできます。
圧縮: ライフ サイクル全体を通じて読み取り専用のテーブルをデータベースに作成する場合は、MyISAM のテーブルを使用する必要があります。テーブルを圧縮してスペース使用量を削減します。
長所と短所: MyISAM の利点は、フットプリントが小さく、処理速度が速いことです。欠点は、トランザクションの整合性と同時実行性がサポートされていないことです。
。 innoDBストレージ エンジン ストレージの場所: MySQL InnoDB ストレージ エンジンを使用する場合、データベース ファイルの種類には .frm、ibdata1、および .ibd が含まれます。 .frm ファイルのデフォルトのストレージ場所は C です。 :Documents and SettingsAll UsersApplicationDataMySQLMySQL Server 5.1data、ibdata1、および .ibd ファイルのデフォルトの保存場所は、MySQL インストール ディレクトリのデータ フォルダです。
innodb ストレージ エンジンの MySQL テーブルは、トランザクション、ロールバック、システム クラッシュ修復機能と、マルチバージョン バースト制御によるトランザクション セキュリティを提供します。
innodb は自動インクリメント列 (auto_increment) をサポートしています。自動インクリメント列の値を空にすることはできません。既存の値が存在する場合、その値を自動的に保存して値を増加し始めることができます。ただし、現在の値より大きい場合は、この値を保存してください。
innodb ストレージ エンジンは外部キーをサポートしています。外部キーが配置されているテーブルは子テーブルと呼ばれ、それが依存するテーブルは親テーブルと呼ばれます。
innodb ストレージ エンジンで最も重要なことは、トランザクションとトランザクション関連の機能をサポートしていることです。
innodb ストレージ エンジンは、mvcc 行レベルのロックをサポートします。
innodb ストレージ エンジン インデックスは B+Tree を使用します
長所と短所: InnoDB の利点は、優れたトランザクション処理、クラッシュ修復機能、同時実行制御を提供することです。欠点は、読み書き効率が悪く、占有されるデータ容量が比較的大きいことです。
3。 MEMORYストレージ エンジンメモリ ストレージ エンジンは、これまでのストレージ エンジンとは少し異なり、そこに保存されているデータを使用してテーブルを作成し、すべてのデータもメモリに保存されます。
メモリストレージエンジンに基づく各テーブルは、実際にはディスクファイルに対応しており、ファイル名とファイルのテーブル名は同じで、タイプは.frmです。このファイルにはテーブルの構造のみが保存され、そのデータ ファイルはメモリに保存されるため、データの高速処理が容易になり、テーブル全体の処理能力が向上します。
メモリ ストレージ エンジンはデフォルトでハッシュ (HASH) インデックスを使用します。これは、B-+Tree タイプを使用するよりも高速です。リーダーが B-tree タイプを使用したい場合は、作成時にそれを参照できます。
メモリ ストレージ エンジンのファイル データはメモリに保存され、mysqld プロセスで例外が発生した場合、マシンを再起動またはシャットダウンするとデータが消えます。したがって、メモリ ストレージ エンジン内のテーブルのライフ サイクルは非常に短く、通常は 1 回しか使用されません。
4。 アーカイブストレージ エンジン
このストレージ エンジンは、大量の独立したデータを履歴レコードとして保存するのに非常に適しています。 InnoDB と MyISAM の 2 つのエンジンとは異なり、ARCHIVE は圧縮機能を提供し、効率的な挿入速度を備えていますが、このエンジンはインデックスをサポートしていないため、クエリのパフォーマンスが劣ります。
4つ。 4 つのストレージ エンジンの比較
InnoDB: トランザクション処理をサポートし、外部キーをサポートし、クラッシュ修復機能と同時実行制御をサポートします。トランザクションの整合性に関して比較的高い要件があり (銀行など)、同時実行制御が必要な場合 (チケット販売など)、InnoDB を選択することには大きな利点があります。頻繁な更新と削除が必要なデータベースが必要な場合は、トランザクションのコミットとロールバックをサポートしている InnoDB を選択することもできます。
MyISAM: データの挿入は速く、スペースとメモリの使用量は比較的少ないです。テーブルの主な用途が新規レコードの挿入とレコードの読み出しである場合、MyISAM を選択すると高い処理効率が得られます。アプリケーションの整合性と同時実行性の要件が比較的低い場合にも使用できます。データテーブルが主にレコードの挿入とクエリに使用される場合、MyISAM エンジンはより高い処理効率を提供できます
メモリ: すべてのデータはメモリ内にあり、データ処理速度は高速ですが、セキュリティは高くありません。高速な読み取りおよび書き込み速度と低いデータ セキュリティ要件が必要な場合は、MEMOEY を選択できます。テーブルのサイズには要件があり、大きすぎるテーブルを作成することはできません。したがって、このタイプのデータベースは、比較的小さなデータベース テーブルにのみ使用されます。データを一時的に保存するだけで、データ量が大きくなく、高度なデータ セキュリティが必要ない場合は、メモリ エンジンを選択してデータをメモリに保存できます。このエンジンは、MySQL の一時テーブルとして使用され、保存されます。クエリの中間結果
場合、INSERT および SELECT 操作のみの場合、アーカイブは高同時実行性の挿入操作をサポートしますが、トランザクションセーフではありません。 Archive は、アーカイブされたデータの保存に非常に適しています。たとえば、Archiv を使用して、同じデータベースで複数のストレージ エンジンのテーブルを使用できることに注意してください。テーブルで比較的高度なトランザクション処理が必要な場合は、InnoDB を選択できます。このデータベースでは、より高いクエリ要件を持つテーブルを MyISAM に保存できます。データベースにクエリ用の一時テーブルが必要な場合は、MEMORY ストレージ エンジンを選択できます。
関連記事:
MySQL ストレージ エンジン MyISAM と InnoDB の 9 つの違いmysql-MySQL ストレージ エンジンの違い以上がMySQL で一般的に使用されるストレージ エンジンは何ですか?それぞれどう違うのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。