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の記述形式、モバイルページの基本構造の詳細な説明

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

推薦する

Ubuntu で VIM を C++ 開発エディタとして設定する

1. 設定ファイルをユーザー環境にコピーし、新しい.vimフォルダを作成し、バンドルサブフォルダを作...

Nginx ログ管理の概要

Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...

Linux 基本チュートリアル: 特別な権限 SUID、SGID、SBIT

序文Linux のファイルまたはディレクトリの権限については、共通の rwx 権限を知っておく必要が...

Podmanはコンテナを自動的に起動し、Dockerと比較します

目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...

Vueの使用に関する深い理解

目次Vueのコアコンセプトを理解するVueの双方向バインディングの原理と実装を探るVue 双方向バイ...

MySQL 5.7.18 リリース インストール ガイド (bin ファイル バージョンを含む)

インストール プロセスは、コンパイル手順を除いて、基本的にソース バージョンと同じです。この記事では...

CentOS8 デプロイメント LNMP 環境で mysql8.0.29 をコンパイルしてインストールする方法の詳細なチュートリアル

1. 前提条件何度かインストールしているので、エラーについてはこれ以上説明しません。ちょっとわかりに...

Node.js コンソールで強調表示されたコードを印刷する方法

序文コードを実行してエラーが発生すると、エラーが出力されます。エラーにはスタック情報が含まれており、...

通知メッセージカルーセルを実装するための CSS3 トランジション

Vueバージョンをファイルにコピーして使用します <テンプレート> <!-- カル...

Vue プロジェクトの最初の画面のパフォーマンス最適化コンポーネントの実践ガイド

目次Vue ファースト スクリーン パフォーマンス最適化コンポーネント説明するインターセクションオブ...

HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...

MySQLでクエリキャッシュを実行する方法と失敗を解決する方法

関数を使用する前にパラメータのプロパティを理解して、関数の使い方をより深く理解する必要があることは誰...

Nodeはリクエスト追跡にasync_hooksモジュールを使用します

async_hooks モジュールは、Node.js バージョン 8.0.0 に正式に追加された実験...

MySQL ifnull のネスト使用手順

MySQL ifnull のネストされた使用ifnull をネストする方法があるかどうかオンラインで...