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
目次1. 怠惰な2.トリム3.番号4.停止5. キャプチャ6.自分7.一度8.予防する9.ネイティブ...
目次背景:必要:効果1. アイデア2. 実装1. ページとスタイル2. 初期化3. クリックすると4...
この記事の目的は、最も明確な構造を使用していくつかのコンポーネントの基本機能を実装することです。皆さ...
Linux 構成/ビルド システムがどのように機能するかを深く理解します。 Linux カーネル構成...
目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...
1. 目標: mysql の character_set_server の値を latin1 から ...
1. 問題の説明 root@mysqldb 22:12: [xucl]> テーブル t1\G ...
最近、WeChat アプレットを作成しているのですが、いくつか問題が発生しました。インターネットでい...
問題: MySQLテーブル内の自動増分IDのオーバーフローによりビジネスブロックが発生した背景: t...
bmi ボイジャーピッチフォークアルスター食料品店チャウ真/斜めポスタこれは偽のDIYですクリエイテ...
この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...
背景webpackのバージョンを確認したいのですが、webpack -vを実行するとエラーが報告され...
この記事では、カルーセル画像の表示を実現するためのjsの具体的なコードを参考までに共有します。具体的...
この記事の例では、星を消すためのJSの具体的なコードを参考までに共有しています。具体的な内容は次のと...
多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...