MySQL 入門 - 概念

MySQL 入門 - 概念

1. それは何ですか?

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに関して言えば、MySQL は最高の RDBMS (リレーショナル データベース管理システム) アプリケーション ソフトウェアの 1 つです。

1.1 RDBMS

RDBMS (リレーショナル データベース管理システム) の機能:

1. データは表形式で表示されます

2. 各行はレコード名です

3. 各列はレコード名に対応するデータフィールドです

4. フォームは多数の行と列から構成される

5. データベースは複数のフォームから構成される

1.2 MySQLデータベース

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有するリレーショナル データベース管理システムです。 MySQL は、すべてのデータを 1 つの大きなウェアハウスに格納するのではなく、異なるテーブルにデータを格納するリレーショナル データベース管理システムであり、速度と柔軟性が向上します。

  • MySQL はオープンソースであり、現在は Oracle の製品です。
  • MySQL は非常に大規模なデータベースをサポートします。数千万件のレコードを含む大規模なデータベースを処理できます。
  • MySQL は標準の SQL データ言語形式を使用します。
  • MySQL は複数のシステムで実行でき、複数の言語をサポートします。これらのプログラミング言語には、C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、Tcl などが含まれます。
  • MySQL は、現在最も人気のある Web 開発言語である PHP を適切にサポートしています。
  • MySQL は、5,000 万レコードの大規模データベースとデータ ウェアハウスをサポートします。32 ビット システムでサポートされる最大のテーブル ファイルは 4 GB、64 ビット システムでサポートされる最大のテーブル ファイルは 8 TB です。
  • MySQL はカスタマイズ可能で、GPL プロトコルを使用します。ソース コードを変更して独自の MySQL システムを開発できます。

2. 動作メカニズム

2.1 全体アーキテクチャ図(C/Sアーキテクチャ)

  • クライアント:

MySQLサーバーに接続する機能を提供する共通ツールキット

  • サーバ:

MySQLインスタンス、実際にデータストレージとデータ処理機能を提供するMySQLサーバープロセス

  • mysqld:

MySQL サーバー デーモンはバックグラウンドで実行されます。クライアントのリクエストを管理します。 mysqld は、複数のセッションの接続、ポートのリッスン、および MySQL インスタンスの管理を可能にするマルチスレッド プロセスです。

  • 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 通信プロトコル

MySQL 5.7 では、TCP/IP、TLS/SSL、Unix ソケット、共有メモリ、名前付きパイプの 5 つのタイプがあります。これら 5 つのタイプの違いを見てみましょう。

方法デフォルトで有効サポートシステムこのマシンのみサポート電源の入れ方パラメータ設定
プロトコルはいすべてのシステムいいえ--skip-networking=はい/いいえ--port--bind-address
TLS/SSLはいすべてのシステム(TCP/IP ベース)いいえ–ssl=はい/いいえ--ssl-* オプション
Unix ソケットはいUnix系システムはい--socket= 閉じます--socket=ソケットパス
共有メモリいいえウィンドウズはい–共有メモリ=オン/オフ。 --共有メモリベース名=
名前付きパイプいいえウィンドウズいいえ--enable-named-pipe=オン/オフ--ソケット=

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) とデータ定義言語 (DDL) の 2 つの部分に分けられます。 SQL (Structured Query Language) は、クエリを実行するための構文です。しかし、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のその他のコンテンツにも注目してください。

以下もご興味があるかもしれません:
  • MySQL初心者のための基本操作のまとめ
  • MySQL 初心者ガイド - クイックリファレンス
  • MySQL 入門 - SQL 実行プロセス

<<:  Dockerでrabbitmqをデプロイする際に発生した2つの問題

>>:  シンプルなプログレスバーを作成するための HTML+CSS

推薦する

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...

Windows10にMySQL5.6.35データベースを2つインストールする

次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...

vue + Electron でデスクトップ アプリケーションを作成するためのサンプル コード

1.vueパッケージングここでは、vueネイティブパッケージングコマンドを使用してvueプロジェクト...

MySQLクエリキャッシュに関するヒント

目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...

Docker ビルド kubectl イメージ実装手順

プログラムサービスがgitlab ci/cdと統合されたk8sを使用してデプロイされている場合、gi...

フレームセットを使用してワイドスクリーンを中央に配置するためのヒントを共有する

コードをコピーコードは次のとおりです。 <フレームセット cols="*,1280,...

MySQL開発標準と使用スキルの概要

1. 命名規則1. データベース名、テーブル名、フィールド名には小文字を使用し、アンダースコアで区切...

MySQL 5.7.25 圧縮版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.25圧縮版のインストールと設定方法を参考までに紹介します。具体的な...

レスポンシブ Web デザイン手法を実装し、ウォーターフォール モデルに別れを告げる 5 つのステップ (グラフィック チュートリアル)

次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...

ウェブデザインにおけるカラーマッチングの優れた例30選

本日は、色彩の応用に関する優れた事例を 30 件集めて、皆さんにご紹介したいと思います。これらの事例...

MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明

MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...

MySQL 5.7.17 のインストールと使用方法のグラフィックチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

HTML テーブル マウス ドラッグ ソート機能

効果画像: 1. ファイルをインポートする<script src="js/jquer...

nginx で複数の仮想ホストを設定する方法の例

nginx で仮想ホスト vhost を設定すると非常に便利です。 nginx設定ファイルnginx...

HTML の基本概要推奨事項 (段落)

HTML段落段落は <p> タグによって定義されます。例<p>これは段落で...