MySQL1 との戦い - MySQL の基礎となるアーキテクチャのレイアウト

MySQL ソフトウェアは、非常に高速、マルチスレッド、マルチユーザー、堅牢な SQL (構造化照会言語) データベース サーバーを提供します。MySQL Server は、ミッションクリティカルで耐久性の高い運用システムでの使用を目的としており、大規模に展開されるソフトウェアに組み込まれています。Oracle は、Oracle Corporation および/またはその関連会社の登録商標です。MySQL は Oracle Corporation および/またはその関連会社の商標であり、Oracle の書面による明示的な許可なしにお客様が使用することはできません。他の名前は、それぞれの所有者の商標である場合があります。(公式サイトより転載)

上記はMySQL8.0以前の論理アーキテクチャのマクロコンポーネント図で、主にMSQLサーバー層とエンジン層の2層に分かれています。このうちセレクターはエンジン層のコンポーネントではなくサーバー層であり、エンジン層を描画することでそのデータ送信ロジックを感覚的に表現することになります。

サーバー層には、次の 6 つの主要コンポーネントがあります。

1. コネクタ: 主に外部との接続を担当し、JDBC などを表します。同時に、特定の情報検証機能(ユーザー名とパスワードの検証)、権限チェックなども備えています。

2. キャッシュ: MySQL8.0 より前のサーバー層コンポーネント。主な機能は、MySQL が選択操作を実行するときに、SQL に従ってハッシュ値を計算し、クエリ結果セットの値をマップして返すことです。

MySQL キャッシュは KV (キー-値) 構造であり、キーは SQL ステートメントのハッシュ値、値は SQL ステートメントのクエリによって取得された結果セットです。

3. アナライザー: SQL ステートメントを分析するには、次の 2 つの主な手順があります。

(1) 字句分析: SQL ステートメントの字句分析を実行します。次の SQL ステートメントは例です。

select * from table_t where f1 = 1;

上記のSQL文を解析する場合、select操作はクエリ操作であると判断し、from分析の場合はtable_tから検索、where分析の場合はクエリ条件を「f1 = 1」とします(字句解析には注意してください)。 SQL ステートメントをスライスするだけであり、操作は実行されません。率直に言って、それは純粋な文字列操作です)

(2) 構文解析:上記 SQL の字句解析後、SQL 文の言語解析を行う必要があり、MySQL 文の規格を満たしていない場合は SQL 構文エラーが報告されます。

4. オプティマイザー: アナライザーは MySQL に SQL が何を実行するかを知らせ、オプティマイザーは MySQL に SQL の実行方法を知らせます。この段階では、MySQL は SQL を実行ツリーに構築し、サービス エンジンは実行ツリーに従って段階的に動作します。

5. 実行者: 何をすべきか、実行計画を立てても、やはり実行者が必要です。エグゼキューターは、エンジン層と通信し、SQL ステートメントと追加の拡張情報 (エンジン情報など) をセレクターに送信する責任があります。

6. セレクター: セレクター自体はエンジン層のサービスではなく、MySQL サービス層のサービスであり、エグゼキューターは SQL と拡張情報をセレクターに送信し、セレクターはそれを受け取った情報を解析し、エンジン インターフェイスを呼び出し、SQL ステートメントを実行し、結果をクライアントに返します。


エンジン層については、少しの基本知識がある人であれば、MySQL がプラガブル操作をサポートするマルチエンジン データベース サービスであることを知っています。MySQL エコシステムでは、企業のビジネス ニーズに応じてエンジンを自社開発できます。オリジナルの InnoDB エンジンは外部エンジンでしたが、InnoDB の優れた設計と豊富な機能により、最終的には MySQL コミュニティと Oracle を征服し、MySQL8.0 以降のデフォルト エンジンになりました。

エンジン層の主な機能は、基盤となるディスクと通信し、顧客情報をディスクに保存し、ストレージ プロセス中に各エンジンのさまざまな特性を使用してストレージを最適化および処理することです。

エンジンに関してはInnoDBとmyIsamが主流ですが、この2つのエンジンの違いや特徴については後ほど追記していきます。要約すると、エンジンはセレクターが呼び出すための統一インターフェイスを提供し、そのディスクが外部とやり取りできるようにし、基盤となるストレージとデータの最適化を担当します。

おすすめ

転載: blog.csdn.net/qq_44503987/article/details/119742176