記事ディレクトリ:
2.1 InnoDB(フォーカス、外部キーをサポートするトランザクションストレージエンジン)
2.2 MyISAM(強調、メインの非トランザクションストレージエンジン)
2.5ブラックホール(書き込み操作を破棄し、読み取り操作は空のコンテンツを返します)
2.6 CSV(データを保存する場合は、データ項目をコンマで区切ります)
2.8マージ(複数のMyISAMテーブルで構成されるテーブルのセットを管理する)
2.9 NDB(MySQL Cluster Dedicated Storage Engine)
1.ストレージエンジンに関する関連コマンド
mysqlが提供する ストレージエンジンを確認して ください。(ここではmysql5.7を使用しています)
次のコマンドを使用して、主要なストレージエンジンの情報をより詳細に表示することもできます。
デフォルトのストレージエンジンを確認してください。
show variables like '%storage_engine%';
#或
SELECT @@default_storage_engine;
もちろん、デフォルトのストレージエンジンも変更します。テーブルのストレージエンジンがテーブル作成ステートメントで明示的に指定されていない場合、デフォルトでは InnoDBが テーブルのストレージエンジンとして使用されます。テーブルのデフォルトのストレージエンジンを変更する場合は、次のようにサーバーを起動するコマンドラインを記述できます。
SET DEFAULT_STORAGE_ENGINE=MyISAM;
または、 my.cnf ファイルを変更します。
default-storage-engine=MyISAM
#重启服务
systemctl restart mysqld
ストレージエンジンは、テーブル内のデータの抽出と書き込みを担当します。テーブルごとに 異なる つまり、テーブルごとに物理ストレージ構造と抽出および書き込み方法を変えることができます。テーブルを作成する前のステートメントでは、テーブルのストレージエンジンが指定されていなかったため、デフォルトのストレージエンジンである InnoDBが使用され ます。テーブルのストレージエンジンを明示的に指定する場合は、次のように記述できます。
CREATE TABLE 表名(
建表语句
) ENGINE = 存储引擎名称;
テーブルがすでに作成されている場合は、次のステートメントを使用してテーブルのストレージエンジンを変更することもできます。
ALTER TABLE 表名 ENGINE = 存储引擎名称;
2.ストレージエンジンの詳細な紹介
2.1 InnoDB(フォーカス、外部キーをサポートするトランザクションストレージエンジン)
MySQLには、 3.23.34a 以降の InnoDBストレージエンジンが含まれています。5.5以降では、デフォルトでInnoDBエンジンが使用されます。InnoDB は、 MySQL の デフォルトトランザクションエンジン であり、多数の 短期間の トランザクションを処理するように設計されています。トランザクションの完全なコミット (コミット) とロールバック (ロールバック)を保証でき ます。追加とクエリに加えて、更新と削除の操作も必要になるため、 InnoDB ストレージエンジンを優先する必要があります。別のストレージエンジンを使用する特別な理由がない限り、 InnoDBエンジンを使用する ことをお勧めし ます。データファイル構造: table name.frm はテーブル構造を格納します( MySQL 8.0 では、テーブル name.ibdにマージされます ); tablename.ibdはデータとインデックスを格納します。InnoDB は、膨大なデータ量で最大のパフォーマンスを発揮するように 設計されています 。以前のリリースでは、ディクショナリデータはメタデータファイル、非トランザクションテーブルなどに保存されていました。これで、これらのメタデータファイルが削除され ます。例: .frm 、 .par 、 .trn 、 .isl 、 .db.optなどは MySQL8.0 には存在しません 。MyISAM ストレージエンジン と比較すると、 InnoDB は書き込み効率が低く 、データとインデックスを保存するためにより多くのディスクスペースを使用します。MyISAM はインデックスのみをキャッシュし、実際のデータはキャッシュしません。InnoDBはインデックスをキャッシュする だけでなく、大量のメモリ を必要とする 実際のデータもキャッシュ します。メモリのサイズはパフォーマンスに決定的な影響を与えます。
2.2 MyISAM(強調、メインの非トランザクションストレージエンジン)
MyISAM は、全文索引付け、圧縮、空間関数 (GIS) などを含む多数の機能を提供しますが、 MyISAM はトランザクション、行レベルのロック、外部キーをサポートしていませ ん。 クラッシュ 。5.5 より前のデフォルトのストレージエンジン。利点は、アクセス 速度が高速であり、トランザクションの整合性や SELECTおよびINSERT に焦点を当てたアプリケーションの要件がないことです 。データ統計用の追加の一定のストレージがあります。したがって、 count(*) のクエリ効率は非常に高くなります。データファイル構造: テーブル 名.frm ストレージテーブル構造 ;テーブル 名.MYD ストレージデータ (MYData) ;テーブル 名.MYI ストレージインデックス (MYIndex)。アプリケーションシナリオ:読み取り専用アプリケーションまたは読み取りベースのサービス。
2.3メモリ(メモリに配置されたテーブル)
メモリが 使用 するはメモリ です。これ は非常に高速に応答します が、 mysqld デーモンがクラッシュすると、 データが失われ ます。また、保存する必要のあるデータは、データ長が一定の形式です。たとえば、 Blob および Text タイプのデータは使用できません ( 長さは固定されていません ) 。主な特徴:メモリ は、ハッシュ( HASH )インデックス と B+ ツリーインデックスの両方をサポートします 。メモリテーブルは、 MyISAMテーブルよりも 少なくとも1桁高速 です 。MEMORY テーブル のサイズには制限があります。 テーブルのサイズは、主に max_rows と max_heap_table_sizeの2つのパラメーターによって決定されます 。その中で、 max_rows はテーブルの作成時に指定できます 。max_heap_table_sizeのサイズは デフォルト で 16MBであり、必要に応じて拡張できます。データファイルは、インデックスファイルとは別に保存されます。短所:データが失われやすく、ライフサイクルが短い。この欠陥のため 、MEMORYストレージエンジンを選択する際には特別な注意が必要です。メモリ ストレージエンジンを使用するシナリオ:1. ターゲットデータは比較的小さく 、 頻繁 され、メモリに保存されます。データが大きすぎると、 メモリ オーバーフローが発生します 。 メモリテーブルのサイズは、パラメータ max_heap_table_sizeで 制御して、 メモリテーブルの最大サイズを制限できます。2. データが一時的であり、すぐに利用可能にする 必要がある 場合 は、メモリに配置できます。3.メモリ テーブル に保存されているデータが突然失われたかどうかは関係ありません。
2.4アーカイブ(データアーカイブ用)
2.5ブラックホール(書き込み操作を破棄し、読み取り操作は空のコンテンツを返します)
2.6 CSV(データを保存する場合は、データ項目をコンマで区切ります)
2.7フェデレーション(リモートテーブルへのアクセス)
2.8マージ(複数のMyISAMテーブルで構成されるテーブルのセットを管理する)
2.9 NDB(MySQLクラスター専用ストレージエンジン)
3.ストレージエンジンの比較
実際、最も一般的に使用されているのは InnoDB と MyISAMであり、 メモリ について言及されることもあり ます。その中で、InnoDBはMySQLのデフォルトのストレージエンジンです。
4. InnoDBとMyISAMについて(強調)
多くの人が InnoDB と MyISAMのどちらを選択するかについて疑問を持ってい ます。どちらが良いですか?MySQL 5.5以前のデフォルトのストレージエンジンは MyISAMでしたが、5.5以降は InnoDB に 変更されました。