この記事は、mysql に関する関連知識を提供します, 主に mysql 論理アーキテクチャの関連問題を紹介します. 一般的なアーキテクチャは 3 つの層に分かれており, 接続スレッドの処理に使用されます, mysql のほとんどが含まれていますコアサービスとストレージエンジンについて、皆様のお役に立てれば幸いです。
#推奨学習: Mysql の論理アーキテクチャ (大きく 3 つの層に分かれています)最初に層: 接続スレッド処理含まれるサービスは mysql に固有のものではありません。それらはすべて C/S プログラム、またはこれらのプログラムが必要とするもの (接続処理、認可認証、セキュリティなど) を提供します。第 2 層: mysql コア サービスのほとんどが含まれています
プロセス: クエリを解析する前に、まずキャッシュにクエリを実行する必要があります。キャッシュはクエリ情報と結果データのみを保存できます。クエリが要求されてキャッシュに存在する場合、解析は必要ありません。クエリは最適化されており、実行され、キャッシュに保存されたクエリの結果が直接返されます。ストレージ エンジンが担当しますmysql の場合 データの保存と取得 (Linux のファイル システムに似ています)3 番目の層: ストレージ エンジンが含まれます
ストレージ エンジン API には、「トランザクションの開始」の実行や特定の主キーを持つ行のフェッチなど、十数個の低レベル関数が含まれていますが、ストレージ エンジンは通常、SQL を解析しません (InnoDB は外部データを解析します)。キー定義 、この機能自体は実装されていないため)、異なるストレージ エンジンは相互に通信せず、単に上位層のサーバー リクエストに応答します。1.Connectors さまざまな予言を参照します SQL との対話Mysql 論理アーキテクチャ - 詳細な紹介 (8 つのステップに分かれています)
2. エンタープライズ管理サービスとユーティリティ
#システム管理および制御ツール
##バックアップとリカバリ、セキュリティ、レプリケーション、クラスタ、パーティショニング、インスタンス マネージャ、INPORMATICN_SCHEMA、管理者、ワークベンチ、クエリ ブラウザ、移行ツールキット
バッファされたユーザー接続、スレッド処理などを管理します。キャッシュ要件が必要です。
ユーザーの SQL コマンドを受け入れ、ユーザーがクエリする必要がある結果を返します。たとえば、select from は SQL インターフェイスを呼び出します
SQL コマンドがパーサーに渡されると、検証と解析が行われます。パーサーは Lex と YACC によって実装されており、非常に長いスクリプトです。MySQL では、クライアントから送信されたすべてのコマンドを呼び出して、サーバー側はクエリと呼ばれます。MySQL サーバーでは、接続スレッドがクライアントを受け取ります。最後にクエリを受信した後、クエリは、さまざまなクエリを分類し、対応する各処理モジュールに転送するモジュールに直接渡されます。############主な機能:##### #
a. SQL ステートメントの意味分析と構文分析を実行し、それらをデータ構造に分解し、同じ操作タイプに従って分類し、後続のステップへのターゲットを絞った転送を行います。
クエリ変換、オブジェクト権限6.オプティマイザー (クエリ オプティマイザー)SQL ステートメントは、クエリを実行する前にクエリ オプティマイザーを使用してクエリを最適化します。クライアントがクエリを要求する クライアントが要求したクエリ文とデータベース内のいくつかの統計情報に基づいて、一連のアルゴリズムに基づいて分析され、最適な戦略が得られ、後続のプログラムにどのように実行するかを指示します。クエリ ステートメントの結果を取得します。クエリには「Select-Projection-Join」戦略を使用します。
アクセス パス、統計7.キャッシュとバッファ (クエリ キャッシュ)主な機能は次のとおりです。クライアントを MySQL のクラス選択クエリに送信する リクエストによって返された結果セットはメモリにキャッシュされ、クエリのハッシュ値に対応します クエリによって取得されたデータのベース テーブルでデータ変更が発生した後、MySQL はクエリのキャッシュを自動的に無効化します。読み取りと書き込みの比率が非常に高いアプリケーション システムでは、クエリ キャッシュによりパフォーマンスが大幅に向上しますが、当然のことながら大量のメモリを消費します。
グローバルおよびエンジン固有のキャッシュとバッファ8.プラグイン可能なストレージ エンジン
注: ストレージ エンジンはデータベースではなくテーブルに基づいています
データベース ワークフロー確立TCP 接続—> ユーザーの確認—> SQL を解析するスレッドの作成—> 実行プランの生成—> テーブルを開く—> バッファを検索して必要なデータ ページがキャッシュされているかどうかを確認—> ディスク データからスキャン— >データを取得してバッファ プールに書き込む——>データをクライアントに返す——>テーブルを閉じる——>スレッドを閉じる——>接続を閉じる
2. 認可認証: クエリ操作の前に、ユーザー モジュールを呼び出して認可チェックを実行し、ユーザーに権限があるかどうかを確認する必要があります。認可に合格すると、サービスが提供され、接続スレッドが受け入れを開始します。クライアントからの SQL ステートメントを処理します
2. クエリ ステートメントの場合は、まずクエリ キャッシュに結果があるかどうかを確認し、結果があればクライアントに直接返します。
3. クエリ キャッシュに結果がない場合は、データベース エンジン層にクエリを実行し、SQL ステートメントをオプティマイザに送信してクエリを最適化する必要があります。テーブル変更の場合は、分類が渡されます。挿入、更新、削除に進み、処理用の作成、アラート処理モジュール
2. まずキャッシュページに該当するデータがあるか確認し、あればそのまま返却、なければディスクから読み込みます。データがディスク上で見つかった後、データはキャッシュにロードされ、後続のクエリがより効率的になります。キャッシュが限られているため、キャッシュされたデータが頻繁にアクセスされるように、柔軟な LRU テーブルを使用してキャッシュ ページを管理することがよくあります。
4. 最後に、データを取得したら、それをクライアントに返し、接続を閉じ、接続スレッドを解放します。
1. プラグイン ストレージ エンジンとは何ですか
#2. LRU キャッシュとはストレージ エンジンは、ディスクへのデータの読み取りと書き込みを行います。ストレージエンジン、読み取りと書き込みの操作方法も異なり、トランザクション、ロックなどが異なります。ビジネスニーズが異なるため、多くのストレージエンジンが存在します。データベースでは、ストレージエンジンはテーブルに基づいているため、さまざまですテーブルにはさまざまなストレージ エンジンを含めることができます。これにより、実行中の MySQL サーバーにストレージ エンジンをロードできます。これは、プラグイン ストレージ エンジンです。
キャッシュ削除メカニズムの戦略アルゴリズム, キャッシュ メモリは常に限られているため, 新しいコンテンツのためのスペースを作るためにキャッシュがいっぱいになったときに一部のコンテンツを削除する必要があります. LRU メカニズムでは, 削除されたデータは無駄なデータと呼ばれます. の正式名LRU は最も最近使用されていないデータ、つまり最近使用されたデータは有用であり、長期間使用されていないデータは役に立たないと考えられます。長期間使用されるものは最初に削除されます
以上がMySQL の論理アーキテクチャについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。