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

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

推薦する

MySQLアラームの詳細な分析と処理

最近、あるサービスにアラームが発生し、耐えられなくなっています。アラーム情報は次のとおりです。メトリ...

シンプルなページング効果を実現するjQuery+Ajax

この記事では、ページング効果を実現するためのjquery+Ajaxの具体的なコードを参考までに紹介し...

ウェブサイトに最も必要なのは、ターゲットユーザーグループのエクスペリエンスを向上させることです。

「大河は東に流れ、波は歴代の英雄たちを洗い流した。古城の西側は三国時代の周朗の赤壁だと言われている...

Webデザイナーの成長体験

<br />まず最初に、私はこのグループの中では完全な新人だということを述べなければなり...

JQueryはアニメーション効果の非表示と表示を実装します

この記事では、アニメーション効果の非表示と表示を実現するためのJQueryの具体的なコードを参考まで...

Windows 10 での MySQL 8.0.20 のインストールと設定方法のグラフィック チュートリアル

Win10システムにMySQL8.0.20をローカルにインストールし、個人的にテストして利用可能であ...

PrometheusはGrafanaディスプレイを使用してMySQLを監視します

目次Prometheusはエクスポーターを介してMySQLを監視し、Grafanaチャートで表示しま...

Mysql で期間の交差をクエリする方法

MySQLクエリ期間の交差使用シナリオデータベース テーブルには、starttime と endti...

MySQL スライディング集計/年初来集計の原理と使用例の分析

この記事では、例を使用して、MySQL スライディング集計/年初来集計の原理と使用方法を説明します。...

ウェブサイトのフロントエンドパフォーマンスの最適化: JavaScript と CSS

Yahoo チームが書いた、ウェブサイトのパフォーマンス最適化に関する記事を読みました。この記事は...

MySQL 結合クエリの原則の知識ポイント

MySQL 結合クエリ1. 基本概念2 つのテーブルの各行をペアで水平に接続して、すべての行の結果を...

Vueはシンプルなマーキー効果を実装します

この記事では、Vueの具体的なコードを共有して、シンプルなマーキー効果を実現しています。具体的な内容...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

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

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

jsを使用して中国語からピンインへの変換の完全な手順を実行します

jsを使用して、中国語をピンインに変換するパッケージを作成しました。倉庫のアドレスはpinyin-p...