1. それは何ですか?
1.1 RDBMS
1. データは表形式で表示されます 2. 各行はレコード名です 3. 各列はレコード名に対応するデータフィールドです 4. フォームは多数の行と列から構成される 5. データベースは複数のフォームから構成される 1.2 MySQLデータベース
2. 動作メカニズム2.1 全体アーキテクチャ図(C/Sアーキテクチャ)
MySQLサーバーに接続する機能を提供する共通ツールキット
MySQLインスタンス、実際にデータストレージとデータ処理機能を提供するMySQLサーバープロセス
MySQL サーバー デーモンはバックグラウンドで実行されます。クライアントのリクエストを管理します。 mysqld は、複数のセッションの接続、ポートのリッスン、および MySQL インスタンスの管理を可能にするマルチスレッド プロセスです。
MySQL に必要なメモリ領域は、innodb_buffer_pool_size (5.7.5 以降)、key_buffer_size など動的です。各セッションには固有の実行プランがあり、同じセッション スコープ内でのみデータ セットを共有できます。
各クライアント接続にはセッションが割り当てられ、セッションは動的に割り当てられ、リサイクルされます。クエリ処理に使用され、各セッションには同時にバッファがあります。各セッションはスレッドとして実行される
SQL ステートメントの構文を検出し、各 SQL ステートメントの SQL_ID を生成します。ユーザー認証もこの段階で行われます。
効率的な実行プランを作成します (ストレージ エンジンによって異なります)。クエリが書き換えられます。たとえば、InnoDB には共有バッファがあるため、オプティマイザはまず事前にキャッシュされたデータから抽出します。テーブル統計オプティマイザーを使用すると、SQL クエリの実行プランが生成されます。この段階でユーザー権限のチェックも行われます。
キャッシュオブジェクトのメタデータと統計
メモリ内で同じクエリ ステートメントを共有します。まったく同じクエリがキャッシュにヒットした場合、MySQL サーバーは結果をキャッシュから直接取得します。キャッシュはセッション間で共有されるため、あるクライアント用に生成された結果セットを別のクライアントで使用できます。クエリ キャッシュは SQL_ID に基づいています。ビューに SELECT ステートメントを書き込むことは、クエリ キャッシュの良い例です。
キャッシュ テーブル インデックス。 MySQL キーはインデックスです。インデックス データのサイズが小さい場合は、インデックス構造とリーフ ノード (インデックス データを格納する) がキャッシュされます。インデックスが大きい場合は、MyISAMストレージエンジンによって通常使用されるインデックス構造のみがキャッシュされます。 2.2 ネットワークプロトコル2.2.1 通信プロトコル
2.2.2 メッセージフォーマットプロトコル ヘッダー: 各プロトコルヘッダーは4バイト
最初の 3 バイトは、データ部分の長さ (プロトコル ヘッダーを除く) を示します。3 バイトで表せる最大長は 16M-1 (2^24 - 1) です。送信するデータ部分がこの長さより大きい場合は、16M-1 の長さごとに 1 つのパケットとして展開する必要があります。受信側がデータを受信したときに、パケットの長さが 16M-1 であることを検出すると、長さが 16M-1 未満のデータ パケットが受信されるまで、さらにデータが続くことを意味します。これは、最後のパケットのデータ長が 0 になる可能性があることを意味します。
1 バイト、0 から始まり 1 ずつ増加します。新しい SQL が送信され、データベースが再接続されると、値は 0 にクリアされます (関数 sql/Net_serv.cc: net_clear)。 データタイプ: 固定長の整数や文字列に加えて、他の種類のデータもいくつかあります。 (固定長フィールド データの保存とアクセス: include/Mybyte_order.h: 値を intstore に保存、値を取得: intkorr、マルチバイト処理はリトルエンディアンの優先順位に基づきます) 1. このタイプのデータへの可変長整数アクセスは、関数内にあります: sql-common/Pack.c: 整数を格納: net_store_length 整数を読み取り: net_field_length 値が 251 未満の場合、値を 1 バイトで直接保存します。 251<=値<2^16 の場合、3 バイトを使用して格納します。最初のバイトは 252 で、他の 2 バイトには整数コンテンツが格納されます。2^16<=値<2^24 の場合、4 バイトを使用して格納します。最初のバイトは 252 で、他の 3 バイトには整数コンテンツが格納されます。2^24<=値<2^64 の場合、9 バイトを使用して格納します。最初のバイトは 255 で、他の 8 バイトには整数コンテンツが格納されます。最初のバイトが 251 の場合、整数フィールドが null であることを意味します。 最初のバイトが 255 の場合、このバイトは ERR パケットの最初のバイトであることを意味します。2. エンコード可能な長さの文字列 文字列の長さは、可変長の整数を使用してエンコードされます。 2.3 SQL構文
クエリと更新の命令は、SQL の DML 部分を構成します。 SELECT - データベース テーブルからデータを取得します。UPDATE - データベース テーブルのデータを更新します。DELETE - データベース テーブルからデータを削除します。INSERT INTO - データベース テーブルにデータを挿入します。SQL のデータ定義言語 (DDL) 部分を使用すると、テーブルを作成または削除できます。インデックス (キー) を定義したり、テーブル間のリンクを指定したり、テーブル間に制約を課したりすることもできます。 SQL で最も重要な DDL ステートメント: CREATE DATABASE - 新しいデータベースを作成しますALTER DATABASE - データベースを変更しますCREATE TABLE - 新しいテーブルを作成しますALTER TABLE - データベース テーブルを変更しますDROP TABLE - テーブルを削除しますCREATE INDEX - インデックス (検索キー) を作成しますDROP INDEX - インデックスを削除します 3. まとめこの記事では、マクロと使用法の観点から MySQL とは何かについて説明します。これについては後ほど詳しく説明します。 123WORDPRESS.COMのその他のコンテンツにも注目してください。 以下もご興味があるかもしれません:
|
<<: Dockerでrabbitmqをデプロイする際に発生した2つの問題
>>: シンプルなプログレスバーを作成するための HTML+CSS
Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...
次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...
1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...
目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...
プログラムサービスがgitlab ci/cdと統合されたk8sを使用してデプロイされている場合、gi...
コードをコピーコードは次のとおりです。 <フレームセット cols="*,1280,...
1. 命名規則1. データベース名、テーブル名、フィールド名には小文字を使用し、アンダースコアで区切...
この記事では、MySQL 5.7.25圧縮版のインストールと設定方法を参考までに紹介します。具体的な...
次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...
本日は、色彩の応用に関する優れた事例を 30 件集めて、皆さんにご紹介したいと思います。これらの事例...
MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...
MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...
効果画像: 1. ファイルをインポートする<script src="js/jquer...
nginx で仮想ホスト vhost を設定すると非常に便利です。 nginx設定ファイルnginx...
HTML段落段落は <p> タグによって定義されます。例<p>これは段落で...