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

推薦する

mysql ワイルドカード (sql 高度なフィルタリング)

目次まず、値の一部と一致させるために使用される特殊文字であるワイルドカードについて簡単に紹介します。...

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

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

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

MySQL のロックに関する問題

ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...

Linux でタスク用のカスタム システム トレイ インジケーターを作成する

システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクション...

HTMLノードの追加と削除の簡単な例

<br />HTMLノードの追加と削除の簡単な例<input type="...

VueとElementUIを組み合わせたスキン変更ソリューション

目次前面に書かれた解決策 1: グローバル スタイル オーバーライドを使用する (フロントエンドに共...

JavaScript の parseInt() の魔法についての簡単な説明

原因このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(at...

Promiseの紹介と基本的な使い方の簡単な分析

Promise は、ES6 で導入された非同期プログラミングのための新しいソリューションです。 Pr...

DIV+CSS命名規則の詳細な説明はSEO最適化に役立ちます

1. CSSファイルの命名規則提案: 文字、_、-、数字を使用します。文字で始まる必要があり、純粋な...

MySQLをインストールして設定し、ルートパスワードを変更する方法

1. インストールapt-get install mysql-server にはアカウントとパスワー...

暗号化における https の Apache 展開の概要

目次目的実験環境実験原理実験手順1. 独立したCAを生成する2. サーバーの秘密鍵と署名要求ファイル...

Linuxシステムにmsfをインストールするプロセスの詳細な説明

または、インストールプロセスを自分で書き留めてください。私のサーバーシステムはAliyun Linu...

JavaScriptで配列を作成する方法の詳細な説明

目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...

TypeScript デコレータ定義

目次1. コンセプト1.1 定義1.2 デコレータファクトリー1.3 デコレータの組み合わせ1.4 ...