1. MySQLアーキテクチャの分析以下は MySQL の簡単なアーキテクチャ図です。 サーバー層:主にコネクタ、クエリ キャッシュ、アナライザー、オプティマイザー、エグゼキュータなどが含まれます。ストアド プロシージャ、トリガー、ビュー、関数など、すべてのクロス ストレージ エンジン機能はこの層に実装されています。一般的なログ モジュールである ストレージ エンジン:主にデータの保存と読み取りを担当し、交換可能なプラグイン アーキテクチャを採用し、 デフォルトのエンジンとして InnoDB バージョン 5.5.5 が使用されます。 1.1 コネクタ主にデータベースへのユーザーログインとユーザーID認証を担当し、アカウントパスワード、権限、その他の操作の検証を含みます。ユーザーアカウントパスワードが渡されると、コネクタは権限テーブル内のユーザーのすべての権限を照会します。その後、この接続における権限ロジックの判断は、この時点で読み取られた権限データに依存します。つまり、接続が切断されない限り、管理者がユーザーの権限を変更しても、ユーザーには影響はありません。 1.2 クエリキャッシュ接続が確立された後、クエリ ステートメントを実行すると、最初にキャッシュがクエリされます。Mysql は最初に SQL が実行されたかどうかを確認し、それを 頻繁に更新されるデータの場合、キャッシュの有効時間が短すぎて、効果が良くないことが多いため、Mysqlクエリにキャッシュを使用することは推奨されません。頻繁に更新されないデータの場合、キャッシュを使用することは可能です。キャッシュ機能はMysqlバージョン8.0以降で削除されました。公式も、この機能の実際の適用シナリオは比較的少ないため、単純に削除されたと考えています。 1.3 アナライザー
最初のステップは字句解析です。SQL文は複数の文字列で構成されています。まず、 2 番目のステップである構文分析は、主に、入力した SQL が正しいかどうか、および MySQL 構文に準拠しているかどうかを判断することです。 これら 2 つの手順を完了すると、MySQL の実行を開始する準備が整いますが、どのように実行し、最良の結果を得るにはどうすればよいでしょうか。ここでオプティマイザーが役立ちます。 1.4 オプティマイザーオプティマイザの役割は、複数のインデックスがある場合にどのようにインデックスを選択するか、複数のテーブルをクエリする場合にどのように関連付け順序を選択するかなど、最適であると判断した実行プランを実行することです(最適ではない場合もあります)。 1.5 アクチュエータ実行プランが選択されると、 2. ステートメント分析2.1 クエリステートメントここまで述べてきましたが、SQL ステートメントはどのように実行されるのでしょうか?実際、SQL は 2 つのタイプに分けられます。1 つはクエリ、もう 1 つは更新 (追加、更新、削除) です。まずクエリ ステートメントを分析してみましょう。ステートメントは次のとおりです。 select * from tb_student A where A.age='18' and A.name='张三'; 上記の説明と組み合わせて、このステートメントの実行フローを分析します。
2.2 更新ステートメント上記はクエリSQLの実行プロセスですが、更新文がどのように実行されるかを見てみましょう。 SQL ステートメントは次のとおりです。 tb_student A を更新し、A.age='19' とし、A.name='张三' とします。 張三の年齢を変更しましょう。実際のデータベースでは、この年齢フィールドは絶対に設定されません。そうしないと、テクニカルディレクターに殴られてしまいます。実際、このステートメントは基本的に前のクエリのプロセスに従いますが、更新を実行するときにログを記録する必要があるため、ログモジュールが導入されます。 MySQLに付属するログモジュールは
ここで、なぜ 2 つのログ モジュールが必要なのか、1 つのログ モジュールで済ませられないのかと疑問に思う学生もいるでしょう。これは以前の
これにより、データの一貫性の問題が解決されます。 結論
MySQL で SQL 文を実行する方法についての記事はこれで終わりです。MySQL で SQL 文を実行する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: JConsoler を使って Tomcat の JVM メモリを監視する方法を説明します
>>: 純粋な CSS でマークダウンの自動番号付けを実装するサンプル コード
序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...
問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...
または、インストールプロセスを自分で書き留めてください。私のサーバーシステムはAliyun Linu...
Dockerのインストール1. 要件: Linuxカーネルバージョン3.10以上 表示: uname...
目次結合アルゴリズム駆動テーブルと非駆動テーブルの違い1. 単純なネストループ結合、単純なネスト、イ...
目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...
1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...
Linux で大量のファイルを削除する効率をテストします。まず500,000個のファイルを作成する$...
目次序文vue-i18nをインストールするロケールの設定getLangs.js の実装i18nインス...
クエリキャッシュ1. クエリキャッシュの動作原理クエリ ステートメントを実行する前に、MySQL は...
原則: まず入力要素を非表示にし、次に CSS を使用してラベル要素のスタイルを設定します (他の要...
HTML5 と jQuery はアップロード前にローカル画像のプレビューを実装しており、その効果は...
1. JDKをインストールする コンピュータの動作桁を確認します。 uname -ar 2017 x...
序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...
この記事では、Vueログイン用画像認証コードの具体的なコードを例として紹介します。具体的な内容は以下...