一般的な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の期間を分析する

推薦する

JavaScript で知らない Object.entries の使い方

目次序文1. 共通オブジェクトを反復処理するには for...of を使用します2. 通常のオブジェ...

スライド効果を実現するためのネイティブJavaScript

ページ、特にホームページを作成するときは、通常、Web サイト全体の他のメイン ページにリンクできる...

a タグにはテキストと画像があります。テキストを非表示にして画像のみを表示するにはどうすればよいでしょうか?

多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...

HTML/CSS の基礎 - HTML コード記述におけるいくつかの注意事項 (必読)

この記事の警告事項は、ブラウザの互換性とはまったく関係ありません。主に、プロジェクトで遭遇したいくつ...

Linux で nginx を起動および再起動する方法

Nginx (エンジン x) は、IMAP/POP3/SMTP サービスも提供する高性能 HTTP ...

MySQLのインストール時に発生する可能性のある問題

質問1:インストール中に net start mysql と入力すると、次のエラー メッセージが表示...

WindowsにOpenSSLをインストールし、OpenSSLを使用して公開鍵と秘密鍵を生成します。

1. OpenSSL公式サイト公式ダウンロードアドレス: https://www.openssl....

MySQL 5.7 における部分テーブルのデュアルマスター同期の実装プロセスの詳細な説明

序文最近、私はある要件に遭遇しました。会社の業務上、2 つのデータベース間の一部のテーブルは、リアル...

Vue を使用して CSS トランジションとアニメーションを実装する方法

目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...

MySql 学習ノートにおけるトランザクション分離レベルの詳細な説明

背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...

Vue 3.0 カスタムディレクティブの使い方

目次1. カスタム指示1. グローバルカスタム指示を登録する2. グローバルカスタム指示を使用する3...

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

CentOS7.5にHarbor1.7をインストールして設定するプロセス全体

1. 必要なパッケージをダウンロードする wget -P /usr/local https://st...

シームレスなカルーセルを実現するjQueryプラグイン

シームレス カルーセルは非常に一般的なエフェクトであり、ロジックを理解すれば非常に簡単です。効果は以...

dockerにmysqlをインストールした後にNavicatが接続できない問題に対する完璧な解決策

1. Dockerがイメージをプルするdocker pull mysql (デフォルトで最新バージョ...