Mysql論理アーキテクチャの詳細な説明

Mysql論理アーキテクチャの詳細な説明

1. 全体的なアーキテクチャ図

他のデータベースと比較すると、MySQL は、そのアーキテクチャがさまざまなシナリオに適用でき、適切に機能するという点で少し異なります。これは主にストレージ エンジン アーキテクチャに反映されています。プラグイン ストレージ エンジン アーキテクチャは、クエリ処理を他のシステム タスクやデータの保存と抽出から分離します。このアーキテクチャにより、ビジネス ニーズと実際の要件に基づいて適切なストレージ エンジンを選択できます。

各レイヤーの紹介:

1.1 接続層

最上位層は、ローカル ソック通信や、同様の TCP/IP 通信を実現するためのクライアント/サーバー ベースのツールのほとんどを含む、多数のクライアントと接続サービスです。主に、接続処理、認可認証、関連するセキュリティ ソリューションなどのタスクを実行します。このレイヤーでは、認証を通じて安全にアクセスしたクライアントにスレッドを提供するために、スレッド プールの概念が導入されています。 SSL ベースの安全なリンクもこの層で実装できます。サーバーは、安全にアクセスする各クライアントの操作権限も検証します。

1.2 サービス層

1.3. エンジン層

ストレージ エンジン レイヤー: ストレージ エンジンは、MySQL でのデータの保存と抽出を実際に担当します。サーバーは API を介してストレージ エンジンと通信します。ストレージ エンジンによって機能が異なるため、実際のニーズに応じて選択できます。

1.4. ストレージ層

データ ストレージ層は主に、raw デバイス上で実行されているファイル システムにデータを保存し、ストレージ エンジンとのやり取りを完了します。

2. プロフィールを表示

show profile を使用して、SQL の実行サイクルを表示します。

2.1 プロファイルを有効にする

プロファイリングが有効になっているかどうかを確認します: show variables like '%profiling%'

有効になっていない場合は、 set profiling=1を実行して有効にすることができます。

2.2 プロファイルの使用

最新のクエリを表示するには、 show prifilesコマンドを実行します。

Query_IDに基づいて、さらにshow profile cpu,block io for query Query_idを実行し、SQL の特定の実行手順を表示できます。

2.3 一般的なクエリプロセス

mysql のクエリプロセスはおおよそ次のようになります。

MySQL クライアントはプロトコルを介して MySQL サーバーとの接続を確立し、クエリ ステートメントを送信し、最初にクエリ キャッシュをチェックし、ヒットした場合は結果を直接返し、ヒットしなかった場合はステートメントを解析します。つまり、クエリを解析する前に、サーバーはまずクエリ キャッシュ (クエリ キャッシュ) にアクセスします。クエリ キャッシュには、SELECT ステートメントと対応するクエリ結果セットが格納されます。クエリ結果がすでにキャッシュ内にある場合、サーバーはクエリを解析、最適化、または再度実行しません。キャッシュ内の結果をユーザーに返すだけなので、システムのパフォーマンスが大幅に向上します。

構文パーサーと前処理: まず、MySQL はキーワードを通じて SQL ステートメントを解析し、対応する「解析ツリー」を生成します。 MySQL パーサーは、MySQL 構文規則を使用してクエリを検証および解析します。さらに、プリプロセッサは、解析された数値がいくつかの MySQL 規則に従って有効であるかどうかを確認します。

クエリ オプティマイザー 解析ツリーが有効であると判断されると、オプティマイザーによって実行プランに変換されます。クエリはさまざまな方法で実行でき、同じ結果が返されます。オプティマイザの役割は、それらの中から最適な実行プランを見つけることです。 。

次に、MySQL はデフォルトで BTREE インデックスを使用します。一般的な方向性としては、SQL をどのように変更しても、少なくとも現時点では、MySQL はテーブル内で最大 1 つのインデックスのみを使用します。

2.4 SQL実行順序

手書き注文:

実際の実行順序は次のとおりです。

MySQL のバージョンが更新されると、そのオプティマイザも常にアップグレードされます。オプティマイザは、異なる実行順序によって生じるさまざまなパフォーマンス消費を分析し、実行順序を動的に調整します。一般的なクエリシーケンスは次のとおりです。

2.5 MyISAM と InnoDB

show engines : すべてのデータベース エンジンを表示

デフォルトのデータベースエンジンを表示するには、 show variables like '%storage_engine%'

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQLデュアルマスター(マスターマスター)アーキテクチャ構成ソリューション
  • MySQLの論理アーキテクチャに関する深い理解
  • MySQL の全体的なアーキテクチャの紹介
  • MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)
  • MySQL 4 の一般的なマスタースレーブレプリケーションアーキテクチャ
  • MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解
  • MySQL アーキテクチャのナレッジポイントの概要
  • MySQL データベース アーキテクチャの詳細

<<:  リソースアップロード機能を実現するための SpringBoot+nginx の詳細な例

>>:  Vueのコンポーネント値の転送から始まるオブザーバーモードの詳細な説明

推薦する

Web ページは何ピクセルで設計すればよいでしょうか?

多くのウェブデザイナーは、ウェブページのレイアウトを設計する際に、インターフェースウェブページの幅に...

docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

導入分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必...

vue+springbootでログイン機能を実現

この記事の例では、ログイン機能を実現するためのvue+springbootの具体的なコードを参考まで...

MySQLデータベースでスロークエリログを有効にする方法の詳細な説明

データベースはスロークエリログを有効にします設定ファイルを変更する設定ファイルmy.iniに次の2つ...

Dockerでイメージ情報を表示する方法

この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...

CSS 画像アニメーション効果のサンプルコード(フォトフレーム)

この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...

MySql Installer 8.0.18 画像とテキストによるビジュアル インストール チュートリアル

目次1. MySQL 8.0.18のインストール2. 環境変数を設定する3. 接続テスト1. MyS...

Dockerイメージのサイズを縮小する6つの方法

2017 年に Vulhub に取り組み始めてから、私は厄介な問題に悩まされてきました。Docker...

Ubuntu 18.04 に VMware Tools をインストールする際のエラーを解決する

1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...

JavaScript の高度なプログラミングの基本参照型

目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...

Vueタイマーの実装方法

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

Javascriptでシンプルなナビゲーションバーを実装

この記事では、参考までに、シンプルなナビゲーションバーを実装するためのJavascriptの具体的な...

mysql8.0.23 Linux (centos7) のインストールの完全かつ詳細なチュートリアル

目次リレーショナルデータベースとは何ですか?非リレーショナルデータベースとは何ですか? MySQL ...

Vue シングルページ SEO の 4 つのソリューションについての簡単な説明

目次1.Nuxtサーバーサイドレンダリングアプリケーションの展開(SSRサーバーレンダリング)利点:...

背景画像の配置におけるbackground-position属性の自己理解

最近、プロジェクトではラベルやボタンなどの断片的な画像をたくさん使用する必要があります。また、CSS...