一般的なMySQLストレージエンジンの長所と短所

一般的なMySQLストレージエンジンの長所と短所

すべてのストレージエンジンを表示

show enginesコマンドを使用して、MySQL サーバーが提供するエンジンを確認できます。

エンジンを表示します。
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| エンジン | サポート | コメント | トランザクション | XA | セーブポイント |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | デフォルト | トランザクション、行レベルのロック、外部キーをサポート | はい | はい | はい |
| MRG_MYISAM | YES | 同一の MyISAM テーブルのコレクション | NO | NO | NO |
| メモリ | はい | ハッシュベース、メモリに保存、一時テーブルに便利 | いいえ | いいえ | いいえ |
| BLACKHOLE | はい | /dev/null ストレージ エンジン (書き込んだものはすべて消えます) | いいえ | いいえ | いいえ |
| MyISAM | はい | MyISAM ストレージ エンジン | いいえ | いいえ | いいえ |
| CSV | はい | CSV ストレージ エンジン | いいえ | いいえ | いいえ |
| アーカイブ | はい | アーカイブ ストレージ エンジン | いいえ | いいえ | いいえ |
| PERFORMANCE_SCHEMA | YES | パフォーマンス スキーマ | NO | NO | NO |
| FEDERATED | NO | フェデレーテッド MySQL ストレージ エンジン | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
セット内の行数は 9 です (0.00 秒)

InnoDB ストレージ エンジン

InnoDB は、トランザクションセーフ テーブル (ACID)、行ロック、外部キーをサポートする、トランザクション データベースに適したエンジンです。 MySQL 5.5.5 以降では、InnoDB がデフォルトのストレージ エンジンとして使用されます。 InnoDB の主な機能は次のとおりです。

  1. InnoDB は、コミット、ロールバック、クラッシュ回復機能を備えたトランザクションセーフ (ACID 準拠) ストレージ エンジンを MySQL に提供します。 InnoDB は行レベルでロックし、SELECT ステートメントで Oracle のような非ロック読み取りも提供します。これらの機能により、マルチユーザー展開とパフォーマンスが向上します。 SQL クエリでは、同じクエリ内であっても、InnoDB テーブルと他の MySQL テーブル タイプを自由に混在させることができます。
  2. InnoDB は、パフォーマンスを考慮して膨大な量のデータを処理するように設計されており、その CPU 効率は他のディスクベースのリレーショナル データベース エンジンとは比べものにならないほど優れています。
  3. InnoDB ストレージ エンジンは、MySQL サーバーと完全に統合されています。InnoDB ストレージ エンジンは、データとインデックスをキャッシュするために、メイン メモリ内に独自のバッファー プールを維持します。 InnoDB は、テーブルとインデックスを論理テーブルスペースに保存します。論理テーブルスペースは、複数のファイル (または生のディスク パーティション) で構成できます。これは、各テーブルが個別のファイルに保存される MyISAM テーブルとは異なります。 InnoDB テーブルは、ファイル サイズが 2 GB に制限されているオペレーティング システムでも、任意のサイズにすることができます。
  4. InnoDB は外部キー整合性制約 (FOREIGN KEY) をサポートしています。テーブルにデータを格納する場合、各テーブルは主キーの順序で格納されます。テーブルの定義時に主キーが明示的に指定されていない場合、InnoDB は各行に対して 6B ROWID を生成し、それを主キーとして使用します。
  5. InnoDB は、高いパフォーマンスが要求される多くの大規模データベース サイトで使用されます。
  6. InnoDB はディレクトリを作成しません。InnoDB を使用すると、MySQL は MySQL データ ディレクトリの下に ibdata1 という名前の 10 MB の自動拡張データ ファイルと、ib_logfile0 および ib_logfile1 という名前の 2 つの 5 MB ログ ファイルを作成します。

MyISAM ストレージエンジン

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

  1. 大きなファイル (ファイル長最大 63 ビット) は、大きなファイルをサポートするファイル システムおよびオペレーティング システムでサポートされます。
  2. 行のサイズが動的に調整されると、削除、更新、挿入の各操作が混在する場合に断片化が少なくなります。これは、隣接する削除されたブロックを結合し、次のブロックが削除された場合に次のブロックに拡張することによって自動的に実行されます。
  3. MyISAM テーブルあたりのインデックスの最大数は 64 ですが、再コンパイルによって変更できます。インデックスあたりの列の最大数は 16 です。
  4. 最大キー長は 1000B ですが、コンパイルによって変更することもできます。キーの長さが 250B を超える場合は、1024B を超えるキーが使用されます。
  5. BLOB 列と TEXT 列にインデックスを設定できます。
  6. インデックス列では NULL 値が許可されます。この値はキーごとに 0 ~ 1 バイトを占めます。
  7. より高いインデックス圧縮を可能にするために、すべての数値キー値は上位バイトから先に格納されます。
  8. テーブルごとに 1 つの AUTO_INCREMENT 列を内部的に処理します。 MyISAM は、INSERT および UPDATE 操作でこの列を自動的に更新します。これにより、AUTO_INCREMENT 列が高速化されます (少なくとも 10%)。シーケンス項目の値が削除されると、再利用できなくなります。
  9. データ ファイルとインデックス ファイルを別のディレクトリに置くことができます。
  10. 各文字列には異なる文字セットを設定できます。
  11. VARCHAR を含むテーブルでは、レコード長を固定または動的にすることができます。
  12. VARCHAR 列と CHAR 列は最大 64 KB です。
  13. MyISAM エンジンを使用してデータベースを作成すると、3 つのファイルが生成されます。ファイル名はテーブル名で始まり、拡張子はファイルの種類を表します。frm ファイルはテーブル定義を格納し、myd はデータ ファイルを表し、myi はインデックス ファイルを表します。

メモリストレージエンジン

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

  1. MEMORY テーブルには、テーブルごとに最大 32 個のインデックス、インデックスごとに 16 個の列、最大キー長 500B を設定できます。
  2. MEMORY ストレージ エンジンは、HASH インデックスと BTREE インデックスを実装します。
  3. MEMORY テーブルに一意でないキーが存在する可能性があります。
  4. MEMORY テーブルは固定レコード長形式を使用します。
  5. MEMORY は BLOG 列または TEXT 列をサポートしていません。
  6. MEMORY は、AUTO_INCREMENT 列と、NULL 値を含めることができる列のインデックスをサポートします。
  7. MEMORY テーブルは、他の非 TEMPORARY テーブルと同様に、すべてのクライアント間で共有されます。
  8. MEMORY テーブルの内容はメモリに保存され、クエリ処理中にサーバーが空き時間に作成した MEMORY テーブルと内部テーブルによって共有されます。
  9. MEMORY テーブルの内容が不要になった場合、MEMORY テーブルが使用するメモリを解放するには、DELETE FROM または TRUNCATE TABLE を実行するか、テーブル全体を削除 (DROP TABLE を使用) する必要があります。

上記は、一般的なMySQLストレージエンジンの長所と短所の詳細な内容です。MySQLストレージエンジンの長所と短所の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL テーブルタイプ ストレージエンジンの選択
  • MySQL データ分析ストレージエンジンの例の説明
  • MySQLデータベースでサポートされているストレージエンジンの比較
  • MySQL のストレージ エンジンの違いと比較
  • MySQLストレージエンジンについて学びましょう

<<:  Vue3 ページ、メニュー、ルートの使用

>>:  LinuxソースコードからTIME_WAITの期間を分析する

推薦する

JS 矢印関数に適さないシナリオは何ですか?

目次概要オブジェクトにメソッドを定義するオブジェクトリテラルオブジェクトプロトタイプ動的コンテキスト...

VMware 仮想マシンでの CentOS7 ネットワーク構成 (ホストのワイヤレス インターネット アクセス)

CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...

HTML 基本ノート (推奨)

1. ウェブページの基本構造: XML/HTML コードコンテンツをクリップボードにコピー<...

Linux QT Kit が見つからない、バージョンが空の問題の解決策

現在このような問題が発生しています 私の状況は、QT が動かなくなってしまったため、仮想マシンを再起...

MySQL の中国語ソートの詳細と例

MySQL の漢字ソートの詳細な説明デフォルトでは、MySQL は日付、時刻、および英語の文字列の並...

MySQLはinit-connectを使用してアクセス監査機能の実装を増やします

まず init-connect を通じて mysql 接続を初期化し、次にインスタンスに接続する必要...

Node.JS で悪天候のリアルタイム警報システムを構築する

目次序文:ステップ1: 無料の天気予報インターフェースを見つけるステップ2: 天気予報インターフェー...

初心者向けの一般的な Linux システムコマンドの完全なリスト

Linux コマンドの学習は、ほとんどの初心者にとって最大の障害です。今日は、Linux システムで...

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

CSS のグリッドプロパティの使用に関する詳細な説明

グリッドレイアウト親要素に追加された属性グリッドテンプレートの列/グリッドテンプレートの行要素の行ま...

WeChatアプレットのスクロールビューが左右連動効果を実現

WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容...

Linux gzip コマンドのファイル圧縮実装原理とコード例

gzip は、Linux システムでファイルの圧縮と解凍によく使用されるコマンドです。このコマンドで...

JavaScript 配列の Reduce() メソッドの構文と例の分析

序文Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が単一の値...

CentOS 8 インストール図 (超詳細なチュートリアル)

CentOS 8 が正式にリリースされました! CentOS は Red Hat の再配布ポリシー...

MySQL/MariaDB ルートパスワードリセットチュートリアル

序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...