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 システムの Swap パーティション、つまり swap パーティションは、一般に仮想メモ...
ボックスモデルの計算<br />マージン + ボーダー + パディング + コンテンツC...
この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...
目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...
この記事では、Linux のユーザーおよびグループのコマンドについて例を挙げて説明します。ご参考まで...
JavaScript ではオブジェクトを走査する順序は固定されていないと聞いたことがある人もいるかも...
1. プロメテウスの紹介Prometheus は、もともと SoundCloud によって開発された...
目次概要グローバルフック関数ルーティング固有のフック関数コンポーネント内のフック関数概要ルートガード...
<TR> タグの属性は、次の表に示すように、テーブル内の各行のプロパティを設定するために...
1. MySQL アーキテクチャストレージ エンジンを紹介する前に、まずは MySQL アーキテクチ...
この記事では、Linux システムを起動する方法について説明します。ご参考までに、詳細は以下の通りで...
目次序文1. モナドの判断1.1 例1.2 オブジェクトに入れる1.3 マップに載せる2. 複数の判...
序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...
Mysql 8.0 のインストールの問題とパスワードのリセット1: MySqlをダウンロードする公式...