MySQL シリーズ 7 MySQL ストレージ エンジン

MySQL シリーズ 7 MySQL ストレージ エンジン

1. MyISAM ストレージエンジン

欠点:

  1. トランザクションはサポートされていません
  2. 最小粒度ロック: テーブルレベル
  3. 読むことと書くことはお互いを妨げるものです。 書きながら読むことはできませんし、読みながら書くこともできません。
  4. MVCC をサポートしていません (マルチバージョン同時実行制御メカニズムをサポート)
  5. クラスター化インデックスはサポートされていません
  6. データキャッシュはサポートされていません
  7. 外部キーはサポートされていません
  8. クラッシュ回復が不十分

アドバンテージ:

  1. 最大256TBのストレージスペースをサポート
  2. データの読み取り速度が速く、リソース消費も少ない

MyISAM エンジン ストレージ ファイル:

  • tbl_name.frm: テーブル形式の定義
  • tbl_name.MYD: データファイル
  • tbl_name.MYI: インデックスファイル

適用可能なシナリオ: MySQL 5.5.5 より前のデフォルトのデータベース エンジン。データが読み取り専用 (または書き込みが少ない) で、テーブルが小さい (長い修復操作が許容される) シナリオに適用可能

2: InnoDB ストレージエンジン

特徴:

  1. 64TB
  2. サポート業務
  3. 行レベルロック
  4. マルチバージョン同時実行制御メカニズム (MVCC) をサポート
  5. クラスター化インデックスをサポート
  6. データキャッシュをサポート
  7. 外部キーをサポート

InnoDB データベース ファイル:

  • tb_name.frm: テーブル形式の定義
  • tb_name.ibd : データファイル

注意: デフォルトでは、すべての innodb テーブル データ ファイルはデータベース ディレクトリの ibddata1、ibddata2、... に保存されるため、管理が非常に不便です。

強く推奨: innodb_file_per_table=ON を有効にし、テーブルごとに別のテーブルスペースを使用してテーブルのデータとインデックスを保存します。

有効化: innodb_file_per_table

/etc/my.cnfを編集し、[mysqld]の下にinnodb_file_per_tableを追加します。
サーバーを再起動します# service mysqld restart
MariaDB [(なし)]> SHOW VARIABLES LIKE 'innodb_file_per_table';
+-----------------------+-------+
| 変数名 | 値 |
+-----------------------+-------+
| innodb_file_per_table | オン |
+-----------------------+-------+

1. ストレージエンジンを管理する

MySQL でサポートされているストレージ エンジンを表示します: MariaDB [(none)]> SHOW ENGINES\G

現在のデフォルトのストレージ エンジンを表示します。

MariaDB [(なし)]> SHOW VARIABLES LIKE 'storage_engine';
+----------------+--------+
| 変数名 | 値 |
+----------------+--------+
| ストレージ エンジン | InnoDB |
+----------------+--------+

デフォルトのストレージ エンジンを設定します。

/etc/my.confを編集し、[mysqld]の下にdefault_storage_engine = InnoDBを追加します。

2. InnoDBストレージエンジンキャッシュ

InnoDB ストレージ エンジンのバッファー プールのバッファー プール ヒット率は、通常 99% 以上です。

関連する状態変数:

MariaDB [(なし)]> SHOW GLOBAL STATUS LIKE 'innodb%read%'\G
  • Innodb_buffer_pool_reads: 物理ディスクからページが読み取られた回数を示します。
  • Innodb_buffer_pool_read_ahead: 事前読み取り回数
  • Innodb_buffer_pool_read_ahead_evicted: 事前に読み取られたが、読み取られずにバッファ プールから置き換えられたページの数。これは通常、事前読み取りの効率を判断するために使用されます。
  • Innodb_buffer_pool_read_requests: バッファプールからページが読み取られる回数
  • Innodb_data_read: 読み取られたバイトの総数
  • Innodb_data_reads: 開始された読み取り要求の数。各読み取りでは複数のページの読み取りが必要になる場合があります。

Innodb バッファプールヒット率 = Innodb_buffer_pool_read_requests / ( Innodb_buffer_pool_read_requests + Innodb_buffer_pool_read_ahead + Innodb_buffer_pool_reads )

読み取りあたりの平均バイト数 = Innodb_data_read / Innodb_data_reads

3. その他のストレージエンジン

  • Performance_Schema: Performance_Schema データベース。
  • メモリ: すべてのデータは RAM に保存されるため、参照データやその他の類似データの迅速な検索が必要な環境で高速にアクセスできます。一時データの保存に適しています。このエンジンは以前は HEAP エンジンとして知られていました。
  • MRG_MyISAM: MySQL DBA または開発者が一連の同一の MyISAM テーブルを論理的にグループ化し、それらを単一のオブジェクトとして参照できるようにします。データ ウェアハウスなどの VLDB (Very Large Database) 環境に適用可能。
  • アーカイブ: めったに参照されない大量のアーカイブまたはセキュリティ監査情報を保存および取得するために、SELECT および INSERT 操作のみをサポートします。行レベルのロックと専用バッファをサポートします。
  • フェデレーテッド フェデレーション: 他のリモート MySQL サーバーにアクセスするために使用されるプロキシ。リモート MySQL サーバーへのクライアント接続を作成し、クエリをリモート サーバーに送信して実行し、データ アクセスを完了します。個別の MySQL サーバーをリンクして、複数の物理サーバーから論理データベースを作成する機能を提供します。分散環境やデータ マート環境に非常に適しています。
  • BDB: InnoDB を置き換えることができ、COMMIT、ROLLBACK、およびその他のトランザクション機能をサポートするトランザクション エンジン。
  • Cluster/NDB: MySQL のクラスター化データベース エンジン。最高の稼働時間と可用性も要求される高性能検索要件を持つアプリケーションに特に適しています。
  • CSV: CSV ストレージ エンジンは、コンマ区切り値形式を使用してテキスト ファイルにデータを保存します。他のソフトウェアやアプリケーション間のデータ交換は、CSV エンジンを使用して CSV 形式でインポートおよびエクスポートできます。
  • BLACKHOLE: ブラックホール ストレージ エンジンはデータを受け入れますが、保存は行わず、取得すると常に空のセットが返されます。この機能は、データが自動的に複製されるがローカルには保存されない分散データベース設計で使用できます。
  • 例: 何もしない「スタブ」エンジン。このエンジンを使用してテーブルを作成することはできますが、テーブルにデータを保存したり、テーブルからデータを取得したりすることはできません。これは、新しいストレージ エンジンの作成を開始する方法の例として意図されています。

これで、MySQL シリーズ、第 7 部、MySQL ストレージ エンジンに関する記事は終了です。MySQL ストレージ エンジンの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLアーキテクチャに基づく分析
  • MySQLアーキテクチャに基づく詳細な分析
  • MySQLのストレージエンジンの詳細な説明
  • MySQLメモリストレージエンジンに関する知識
  • MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明
  • MySQL のストレージ エンジンの違いと比較
  • MySQLのInnoDBストレージエンジンにおけるさまざまなロックの詳細な説明
  • MySQL の MyISAM ストレージ エンジンにおける非クラスター化インデックスの詳細な説明
  • MySQL ストレージ エンジン InnoDB と MyISAM
  • MySQL アーキテクチャとストレージ エンジンの紹介

<<:  CSSの記述形式、モバイルページの基本構造の詳細な説明

>>:  ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

推薦する

RHEL8 /CentOS8 でマルチノード Elastic Stack クラスターを構築する方法

一般的に ELK スタックとして知られる Elastic スタックは、Elasticsearch、L...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

MySQLの基本を素早く学ぶ

目次SQLを理解するSELECTを理解するエイリアス定数をクエリし、固定定数列を追加します。重複行を...

MySQL 8.0.23 メジャーアップデート (新機能)

著者: Guan Changlong は、Aikesheng の配送サービス部門の DBA です。主...

Web ページ WB.ExecWB 制御印刷メソッド呼び出しの説明とパラメータの紹介

WebページWB.ExecWB制御印刷方法コードをコピーコードは次のとおりです。 <テーブルの...

MySQL の不正な文字列値の解決方法

MySQL を使用して中国語の文字を挿入すると、多くの友人から次のエラーが報告されます。 これは、文...

JS配列重複排除の詳細

目次1 テストケース2 JS配列重複排除4種類2.1 要素の比較2.1.1 二重層 for ループ比...

Centos7にGitLabサーバーをインストールして展開する方法

私はここでCentOS 7 64ビットシステムを使用しています。CentOS 64ビットシステムを試...

シンプルなカレンダー効果を実現する js

この記事では、シンプルなカレンダー効果を実現するためのjsの具体的なコードを参考までに共有します。具...

MySQLとOracleの違いのまとめ(機能性能の比較、選択、使用時のSQLなど)

1. 同時実行性同時実行性は OLTP データベースの最も重要な機能ですが、同時実行性にはリソース...

DockerがMySQL構成実装プロセスを開始

目次実際の戦闘プロセスまずは主なコマンドと詳細を一つずつ説明しましょう起動が成功したかどうかを確認す...

ウェブインターフェースデザインでウェブサイトのスタイルガイドを作成する方法(画像とテキスト付き)

スタイル ガイドとは何でしょうか? 簡単に言えば、ストーリーを伝える方法を説明するドキュメントです。...

IDEA が Docker を統合してリモート展開を実現するための手順

1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...

最適なウェブページ幅とその互換性のある実装方法

1. Web ページをデザインするときに、幅を決定するのは非常に面倒な作業です。 jb51.net ...

仮想マシンのディスクサイズを拡張する方法

Vmvare が仮想マシンのディスク サイズを設定した後、ディスク領域が不足していることがわかりまし...