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

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

推薦する

Nginx セッション共有問題の解決策の分析

この記事は主に、Nginx セッション共有の問題に対する解決策を紹介します。記事内のサンプル コード...

エラー 2002 (HY000): ソケット '/tmp/mysql.sock' 経由でローカル MySQL サーバーに接続できません

エラーメッセージ:エラー 2002 (HY000): ソケット '/tmp/mysql.so...

CSSリストのスライドにより、下部に隠れるのを防ぎ、長い画面モデルの処理に適応します。

1. モバイル端末がリストスライドを処理するとき、WeChat には下部にページに戻るボタンが組み...

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

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

MySQLの文字セットを変更する方法

1. MySQLの文字セットを確認する '%char%' のような変数を表示します。...

Docker ベースの Redis 1 マスター、2 スレーブ、3 センチネルの実装

現在、Redis とコンテナについて学習中なので、Docker を使用して Redis マスタースレ...

JS、CSS スタイルのリファレンスの記述

CS: ... 1. <link type="text/css" href...

大規模なMySQLデータベース用のマスタースレーブシステムを構築するアイデアを共有する

今週は戦争のように忙しかったです。他人に操られているような気がします。毎日朝早く出勤して夜遅く帰り、...

CSSスプライトの応用の詳細な説明

CSS Sprite は、CSS スプライトとも呼ばれ、画像結合技術です。この方法は、複数の小さなア...

Nginx プロセス管理とリロードの原則の詳細な説明

プロセス構造図Nginx はマルチプロセス構造です。マルチプロセス構造は、次のような Nginx の...

ウェブサイトのパフォーマンス: 画像とCookieの最適化、モバイルアプリケーションの最適化

前のセクションでは、コンテンツ、サーバー、JavaScript、CSS など、Web サイトのパフォ...

HTMLでカメラを読み込む方法

効果図: 全体的な効果: ビデオ読み込み中: 写真:ステップ1: HTML要素を作成するまず、HTM...

トップナビゲーションバーメニューを作成するためのHTML+CSS

ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...

Centos7.3は起動時に自動的に起動または指定されたコマンドを実行します

Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...

Prometheus+Grafanaによるnginxの監視方法を分析する

目次1. ダウンロード2. nginxとnginx-vts-exporterをインストールする3. ...