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

推薦する

Linux での Docker のインストールと展開の例

以下の記事を読んだ後、プロジェクトをサーバーにデプロイできます。Tomcat、JDK、MySQL な...

Baidu サイト検索が https をサポートしていない問題の解決策 (テスト済み)

最近、携帯電話で https が有効になりました。緑色のロックを取得するには、次の問題を解決する必要...

jQueryカルーセル機能を実装する方法

この記事では、jQueryカルーセル機能の実装コードを参考までに共有します。具体的な内容は次のとおり...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

Vue v-for ループを書く 7 つの方法

目次1. v-forループでは常にキーを使用する2. 特定のスコープ内でv-forループを使用する3...

純粋な CSS3 でモバイルの拡大と縮小の効果を実装するためのサンプル コード

この記事では、純粋な CSS3 を使用してモバイル端末での展開と折りたたみの効果を実装するサンプルコ...

MySQLをシンプルに学ぶ

序文データベースは常に私の弱点でした。自分の経験 (python+sqlalchemy) を組み合わ...

Vue の this.$router と this.$route の違いと push() メソッド

公式文書には次のように記されている。ルーターを挿入することで、どのコンポーネントでも this.$r...

6ull が Linux ドライバ モジュールをロードできない問題の解決方法

目次0x01 ドライバーモジュールのロードに失敗しました0x02 ソリューション要約する0x01 ド...

HTTPS の有効化に関する経験の共有

国内のネットワーク環境が悪化し続ける中、さまざまな改ざんや乗っ取りが後を絶たず、サイト全体をHTTP...

Docker がデータベースのデプロイに適さない 7 つの理由のまとめ

Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソフト...

Pycharmとsshリモートアクセスサーバーdockerの詳細なチュートリアル

背景: 一部の実験はサーバー上で完了する必要があります。したがって、リモート サーバー上のコードをロ...

MySQL はどのようにしてマルチバージョンの同時実行性を実現するのでしょうか?

目次MySQL マルチバージョン同時実行1. マルチバージョン同時実行制御1. 一貫した読み取り2....

テーブルを動的に読み込み、削除する JavaScript

この記事では、テーブルを動的に読み込み、削除するためのJavaScriptの具体的なコードを参考まで...

Tomcatのデフォルトプログラム公開パスの使用と変更についての説明

tomcat7 のデフォルトのプログラム公開パスは tomcat/webapps/ROOT/ です。...