ホームページ  >  記事  >  データベース  >  MySQL アーキテクチャ設計例の分析

MySQL アーキテクチャ設計例の分析

王林
王林転載
2023-05-27 13:41:031216ブラウズ

1. MySQL 全体のアーキテクチャ

図からわかるように、MySQL アーキテクチャは主に サーバー層 ストレージ エンジン層 に分かれています。

サーバー層は、コネクタ、キャッシュ、アナライザー、オプティマイザー、およびエグゼキューターに分割されます。関数、ストアド プロシージャ、トリガー、ビューなど、すべてのクロスストレージ エンジン機能がこのレイヤーに実装されます。

ストレージ エンジン はプラグ可能です。一般的なストレージ エンジンには、MyISAM、InnoDB、Memory などが含まれます。MySQL5.5 より前のデフォルトは MyISAM で、それ以降のデフォルトは InnoDB でした。

MySQL アーキテクチャ設計例の分析

2. コネクタ

コネクタは主にクライアント接続とユーザー認証を管理するために使用されます。

TCP プロトコルはクライアントとサーバーの接続に使用され、TCP ハンドシェイクを実行することで接続が確立され、これに基づいてコネクタが認証を開始します。

> mysql -hlocalhost -P3306 -uroot -p

認証に失敗すると、エラー エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: YES) が発生します。

show processlist コマンドを使用して、システム内のすべての接続の情報を表示できます。

MySQL アーキテクチャ設計例の分析

Commond 列は接続を表します。ステータス、デーモンはバックグラウンド プロセスを表し、クエリはクエリを表し、スリープはアイドル接続を表します。

3. クエリ キャッシュ

クライアントから要求されたクエリはストレージ エンジンに直接アクセスせず、最初に結果がキャッシュに存在するかどうかを確認します。結果がキャッシュされている場合は、結果を直接返します。キャッシュされていない場合は、クエリ処理を再実行し、クエリの完了後に結果をキャッシュします。

無効化キャッシュは、挿入、更新、削除、変更操作など、データ テーブルが変更されるとクリアされます。

データ テーブルが頻繁に変更される場合、キャッシュ ヒット率は非常に低くなります。キャッシュを使用すると読み取りおよび書き込みのパフォーマンスが低下するため、MySQL 8.0 以降のバージョンではキャッシュ モジュールが削除されました。

次のコマンドを実行すると、キャッシュが有効かどうかを確認できます:

MySQL アーキテクチャ設計例の分析

4. Analyzer

アナライザーは主に、SQL ステートメントの 字句分析 文法分析 を実行します。

MySQL キーワードと各単語の意味については、字句解析が必要です。次に、構文分析を実行して、SQL ステートメントが MySQL 構文要件を満たしているかどうかを検出します。

MySQL は、文字列内のカラム名、テーブル名、where、select/update/insert およびその他の MySQL キーワードを識別し、SQL が文法規則に従って文法を満たしているかどうかを判断し、最終的に抽象構文を生成します。ツリー (AST) 。

例: SQL ステートメント内の where キーワードの記述を少なくすると、エラーが表示されます。

mysql> select * from user id=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1' at line 1

5. オプティマイザー

SQL ステートメントが実際に実行される前に、オプティマイザーによって処理される必要があります。

私たちがよく知っている実行計画 (Explain) は、オプティマイザーによって生成されます。

オプティマイザには主に、論理最適化物理最適化という 2 つの機能があります。

論理最適化では、主に等価述語の書き換え、条件付き単純化、サブクエリの削除、接続の削除、セマンティックの最適化、グループのマージ、選択プッシュダウン、インデックスの最適化クエリ、テーブルクエリ置換ビュークエリ、ユニオン置換や演算などを実行します。

貪欲なアルゴリズムとコスト推定モデルを通じて、物理最適化の主な目的は、各実行方法のコストを推定することです。また、インデックスを使用してテーブル接続を最適化し、最終的にクエリ実行プランを生成します。

MySQL オプティマイザーのアーキテクチャ図が添付されており、最適化プロセスが明確にわかります:

MySQL アーキテクチャ設計例の分析

6. Executor

オプティマイザーは SQL を最適化し、実行プランを生成した後、その実行プランをエグゼキューターに渡します。

エグゼキュータは、ストレージ エンジン インターフェイスを呼び出して、実際に SQL クエリを実行します。 SQL ステートメントの実行は、ストレージ エンジンから返されたクエリ結果を取得し、クライアントに返した後に終了します。

以上がMySQL アーキテクチャ設計例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。