1. 全体的なアーキテクチャ図 他のデータベースと比較すると、MySQL は、そのアーキテクチャがさまざまなシナリオに適用でき、適切に機能するという点で少し異なります。これは主にストレージ エンジン アーキテクチャに反映されています。プラグイン ストレージ エンジン アーキテクチャは、クエリ処理を他のシステム タスクやデータの保存と抽出から分離します。このアーキテクチャにより、ビジネス ニーズと実際の要件に基づいて適切なストレージ エンジンを選択できます。 各レイヤーの紹介: 1.1 接続層 最上位層は、ローカル ソック通信や、同様の TCP/IP 通信を実現するためのクライアント/サーバー ベースのツールのほとんどを含む、多数のクライアントと接続サービスです。主に、接続処理、認可認証、関連するセキュリティ ソリューションなどのタスクを実行します。このレイヤーでは、認証を通じて安全にアクセスしたクライアントにスレッドを提供するために、スレッド プールの概念が導入されています。 SSL ベースの安全なリンクもこの層で実装できます。サーバーは、安全にアクセスする各クライアントの操作権限も検証します。 1.2 サービス層 1.3. エンジン層 ストレージ エンジン レイヤー: ストレージ エンジンは、MySQL でのデータの保存と抽出を実際に担当します。サーバーは API を介してストレージ エンジンと通信します。ストレージ エンジンによって機能が異なるため、実際のニーズに応じて選択できます。 1.4. ストレージ層 データ ストレージ層は主に、raw デバイス上で実行されているファイル システムにデータを保存し、ストレージ エンジンとのやり取りを完了します。 2. プロフィールを表示 show profile を使用して、SQL の実行サイクルを表示します。 2.1 プロファイルを有効にする プロファイリングが有効になっているかどうかを確認します: 有効になっていない場合は、 2.2 プロファイルの使用 最新のクエリを表示するには、 2.3 一般的なクエリプロセス mysql のクエリプロセスはおおよそ次のようになります。 MySQL クライアントはプロトコルを介して MySQL サーバーとの接続を確立し、クエリ ステートメントを送信し、最初にクエリ キャッシュをチェックし、ヒットした場合は結果を直接返し、ヒットしなかった場合はステートメントを解析します。つまり、クエリを解析する前に、サーバーはまずクエリ キャッシュ (クエリ キャッシュ) にアクセスします。クエリ キャッシュには、SELECT ステートメントと対応するクエリ結果セットが格納されます。クエリ結果がすでにキャッシュ内にある場合、サーバーはクエリを解析、最適化、または再度実行しません。キャッシュ内の結果をユーザーに返すだけなので、システムのパフォーマンスが大幅に向上します。 構文パーサーと前処理: まず、MySQL はキーワードを通じて SQL ステートメントを解析し、対応する「解析ツリー」を生成します。 MySQL パーサーは、MySQL 構文規則を使用してクエリを検証および解析します。さらに、プリプロセッサは、解析された数値がいくつかの MySQL 規則に従って有効であるかどうかを確認します。 クエリ オプティマイザー 解析ツリーが有効であると判断されると、オプティマイザーによって実行プランに変換されます。クエリはさまざまな方法で実行でき、同じ結果が返されます。オプティマイザの役割は、それらの中から最適な実行プランを見つけることです。 。 次に、MySQL はデフォルトで BTREE インデックスを使用します。一般的な方向性としては、SQL をどのように変更しても、少なくとも現時点では、MySQL はテーブル内で最大 1 つのインデックスのみを使用します。 2.4 SQL実行順序 手書き注文: 実際の実行順序は次のとおりです。 MySQL のバージョンが更新されると、そのオプティマイザも常にアップグレードされます。オプティマイザは、異なる実行順序によって生じるさまざまなパフォーマンス消費を分析し、実行順序を動的に調整します。一般的なクエリシーケンスは次のとおりです。 2.5 MyISAM と InnoDB デフォルトのデータベースエンジンを表示するには、 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: リソースアップロード機能を実現するための SpringBoot+nginx の詳細な例
>>: Vueのコンポーネント値の転送から始まるオブザーバーモードの詳細な説明
有線ネットワーク: イーサネット 無線ネットワーク: 4G、WiFi、Bluetooth、5G 概要...
目次1. シナリオの説明2. 解決策オプションが多すぎる el-select コンポーネントの解決策...
目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...
質問1件会社のサーバーはApacheを使用しており、バックエンドはPHP、サーバーはLinux C/...
2 つ以上のブロックレベル ボックスの垂直に隣接するエッジが重なり合っています。結果として得られる境...
中国語ドキュメント: https://router.vuejs.org/zh/ Vue Router...
目次同一起源ポリシーAjax リクエストの制限: Ajaxは自身のサーバーにのみリクエストを送信でき...
指定されたテーブルからデータをエクスポートするMySQLの詳細な説明必要とする: 1. テーブルはす...
数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...
1. MySQLは現在の日付と時刻を取得する関数1.1 現在の日付 + 時刻 (日付 + 時刻) ...
<br />私の仕事で使用しているアノテーションの書き方の基準をまとめました。技術的な内...
目次序文1. 公式サイトからMySQLをダウンロードする2. 解凍ファイルを設定する3. 初期化4....
最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...
1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...
目次外部キーテーブルの関係を決定する方法テーブル関係を作成する方法1対多の関係 - 従業員テーブルと...