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

推薦する

フレックスインサイドボタンの垂直方向の中央揃えが中央揃えにならない問題の解決方法

問題の説明ボタンのスタイルはアイコン + テキストです。フレックス レイアウトを使用して垂直方向に中...

ビューポートの基本原理と詳細な使用方法

1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...

Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

1. バックグラウンド実行一般的に、Linux 上のプログラムは .sh ファイル (./sh フ...

クリーンなコードのための Web デザインの 12 の法則 [グラフィック]

美しいコードは美しい Web サイトの基礎です。優れた CSS は、同様に優れた HTML の上にの...

LinuxカーネルとSVNバージョン間の競合の解決策

現象システムは Linux システムカーネルを正常にコンパイルできましたが、SVN をインストールし...

有名ウェブサイトのロゴにおすすめのフォント40選

世界で最も有名なウェブサイトのロゴデザインにはどんなフォントが使われているかご存知ですか?これらのフ...

mysql8.0.19 の基本データ型の詳細な説明

MySQL 基本データ型一般的な MySQL データ型の概要 ![1036857-201708011...

MySQLからElasticsearchにデータを同期する方法の詳細な説明

目次1. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...

jsは赤い封筒の順序と量を指定するアルゴリズムを実装します

この記事では、指定された赤い封筒の順序と金額を実装するためのjsの具体的なコードを共有します。具体的...

Ubuntu 20.04 と NVIDIA ドライバーのインストールに関するチュートリアル

Ubuntu 20.04をインストールする NVIDIAドライバーをインストールする Pytouch...

Linuxでサーバーのハードウェア情報を表示する方法

みなさんこんにちは。今日は12連休ですが、何かお買い物はしましたか?今日は「Linux View S...

JavaScript プロトタイプの詳細

目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...

HTMLタグを閉じるのを忘れないでください

Web 標準に準拠した Web ページの構築は、jb51.net が常に全員と議論しているトピックで...

Javascriptで戦略パターンを実装する方法

目次概要コードの実装要約する概要戦略パターンは、JavaScript デザイン パターンにおける動作...