MySQL アーキテクチャのナレッジポイントの概要

MySQL アーキテクチャのナレッジポイントの概要

1. データベースとデータベースインスタンス

MySQL の研究では、データベースとデータベース インスタンスという非常に混同しやすい 2 つの概念があります。 MySQL では、データベースとデータベース インスタンスは次のように定義されます。

データベース: 保存されたデータの集合。

データベース インスタンス: 運用データベースのコレクション。

上記の定義は非常に明確です。データベースはデータの保存に使用され、データベース インスタンスはデータの操作に使用されます。オペレーティング システムの観点から見ると、データベース インスタンスはプロセスとして表され、複数のスレッドに対応します。

非クラスタ データベース アーキテクチャでは、データベースとデータベース インスタンスの間に 1 対 1 の対応関係があります。データベース クラスタでは、1 つのデータベースを操作する複数のデータベース インスタンスが存在する場合があります。つまり、多対 1 の関係です。

2. MySQL スキャフォールド

MySQLは複数のバージョン(MySQL5.5、MySQL 5.6、MySQL 5.7、MySQL 8)を経てきましたが、各バージョンはMySQLに基づいています。

MySQL スキャフォールドには通常、次の主要なモジュール コンポーネントが含まれます。

(1)MySQLは外部対話型インターフェース(コネクタ)を提供する

(2)管理サービスとユーティリティ

(3)接続プール

(4)SQLインターフェース

(5) クエリアナライザコンポーネント(パーサー)

(6)オプティマイザコンポーネント

(7) キャッシュとバッファ

(8)プラガブルストレージエンジン

(9)物理ファイル(ファイルシステム)

(I) MySQLは外部インタラクティブインターフェース(コネクタ)を提供します

コネクタ コンポーネントは、MySQL が提供する対話型コンポーネントです。Java、.net、PHP などの言語では、このコンポーネントを使用して SQL ステートメントを操作し、SQL と対話することができます。

2. 管理サービスとユーティリティ

バックアップ、リカバリ、セキュリティ管理など、MySQL の統合管理を提供します。

(III) 接続プール

クライアントから MySQL サーバーへのさまざまなリクエストを監視し、リクエストを受信し、リクエストをターゲット モジュールに転送する役割を担います。 MySQLサーバーに正常に接続された各クライアントリクエストは

クライアントと MySQL サーバー間の通信、クライアントから送信されたコマンドの受信、サーバーからの結果情報の送信を担当するスレッドを作成または割り当てます。

(IV) SQLインターフェース

DML、DDL、ストアド プロシージャなどのユーザー SQL コマンドを受け取り、最終結果をユーザーに返します。

(V) クエリアナライザコンポーネント (パーサー)

まず、SQL コマンド構文の正当性を分析し、SQL コマンドをデータ構造に分解しようとします。分解に失敗した場合、SQL ステートメントが不合理であることを示します。

(VI) オプティマイザー

標準の手順に従って SQL コマンドを最適化および分析します。

7. キャッシュとバッファ

キャッシュおよびバッファリングコンポーネント

MySQL ストレージエンジン

1. MySQL ストレージ エンジンとは何ですか?

MySQL はリレーショナル データベースであり、リレーショナル データベースの保存はテーブルの形式で行われます。テーブルの作成、データの保存、取得、更新はすべて MySQL によって実行されます。

これはストレージ エンジンによって実行されますが、これは MySQL の MySQL ストレージ エンジンが果たす重要な役割でもあります。

SQL ServerとOracleを学んだ読者は、これら2つのデータベースにはストレージエンジンが1つしかないのに対し、MySQLにはMyISAMストレージなど、より多くの種類のストレージエンジンがあることをご存知かもしれません。

エンジン、InnoDB ストレージ エンジン、およびメモリ ストレージ エンジン。

MySQL に複数のストレージ エンジンがあるのは、MySQL がオープン ソースであるためです。 MySQL ストレージ エンジンは、公式ストレージ エンジンとサードパーティ ストレージ エンジンに大別できます。

スクエアストレージによって発生します。 MySQL はオープン ソースであるため、サード パーティは MySQL フレームワークに基づいてビジネス ニーズに合ったストレージ エンジンを開発できます。

2. MySQLストレージエンジン機能

MySQL ストレージ エンジンは、MySQL で重要な役割を果たします。その役割は主に次の 2 つの側面に要約されます。

機能 1: テーブル作成、データ取得、インデックス作成などを管理します。

機能 2: カスタム ストレージ エンジン開発のニーズを満たします。

3. MySQLエンジンの種類

ストレージ エンジンの種類によって、テーブルを保存する際のストレージ エンジン テーブル メカニズムが異なります。MySQL ストレージ エンジンの種類は、公式ストレージ エンジンとサードパーティ ストレージ エンジンに分けられます。

現在、MyISAMストレージエンジン、InnoDBストレージエンジン、NDBストレージエンジン、アーカイブストレージエンジン、フェデレーテッドストレージエンジン、メモリなど、多くのMySQLストレージエンジンもあります。

ストレージ エンジン、マージ ストレージ エンジン、パートナー ストレージ エンジン、コミュニティ ストレージ エンジン、カスタム ストレージ エンジン、およびその他のストレージ エンジン。

その中で、最も一般的に使用されるストレージ エンジンには、InnoDB ストレージ エンジン、MyISAM ストレージ エンジン、Momery ストレージ エンジンなどがあります。

4. いくつかの代表的なMySQLストレージエンジンの比較

9. 物理ファイル(ファイルシステム)

Linux、Unix、Windows などの、MySQL データベース ファイルと一部のログ ファイルを実際に保存するシステム。

3つの1つのクエリフローチャート

4. 参考文献

[01] MySQL決定版ガイド(米国版) Paul Dubois著、Yang Tao、Yang Xiaoyun、Wang Qun他訳

【02】MySQL テクニカル インサイダー: InnoDB ストレージ エンジン (Jiang Chengyao 著)

【03】SQL学習ガイド(Alan Beaulieu著)

以下もご興味があるかもしれません:
  • MySQLデュアルマスター(マスターマスター)アーキテクチャ構成ソリューション
  • MySQLの論理アーキテクチャに関する深い理解
  • MySQL の全体的なアーキテクチャの紹介
  • MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)
  • MySQL 4 の一般的なマスタースレーブレプリケーションアーキテクチャ
  • MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解
  • Mysql論理アーキテクチャの詳細な説明
  • MySQL データベース アーキテクチャの詳細

<<:  jsはタイトルと説明のキーワードを検出し、見つかった場合は置換するか他のページにジャンプします。

>>:  Linux で cmake を使用して MySQL をコンパイルおよびインストールするための詳細なチュートリアル

推薦する

Tomcat9 のダウンロード、インストール、設定 + Eclipse への統合に関する詳細なチュートリアル

トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...

初心者向け入門チュートリアル④:サブディレクトリのバインド方法

これが何を意味するのかを理解するには、まずサブディレクトリとは何かを知る必要があります。では、サブデ...

MySQLはbinlogを通じてデータを復元する

目次MySQL ログファイルバイナリログBinlogログがオンになっていますログ記録を有効にする方法...

vue3+electron12+dll 開発のためのクライアント構成の詳細な説明

目次リポジトリソースを変更する起動するvue-devtoolsを置き換える予防ボーダーレスウィンドウ...

Windowsタイムサーバーの設定方法の詳しい説明

最近、会社のサーバーの時間が不正確で、外部の時間ソースと同期できないことがわかりました。会社はドメイ...

nginx をコンパイルしてインストールした後、スムーズに nginx をアップグレードする方法

nginx をコンパイルしてインストールし、一定期間使用した後、現在のバージョンに脆弱性があることや...

js は複数の画像を zip にパッケージ化します

目次1. ファイルをインポートする2. HTMLページ3. メインコード4. 画像をbase64に変...

js シンプルで粗雑なパブリッシュとサブスクライブのサンプルコード

パブリッシュ/サブスクライブとは何ですか?例を挙げてみましょう。あなたは服を買うために店に行きます。...

MySQLはconnect_by_isleaf MySQLメソッドまたはストアドプロシージャに似た機能を実装します

最近、特に異常なビジネス需要があり、テーブルがあります テーブル「デモ」を作成します( `id` i...

Dockerを使用して開発環境を構築する方法を素早く習得します

プラットフォームが成長し続けるにつれて、プロジェクトの研究開発は、開発者向けのさまざまな外部環境、特...

React は antd のアップロード コンポーネントを使用してファイル フォーム送信機能を実装します (完全なコード)

私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私...

LinuxシステムでFuserコマンドを使用する方法

Fuser コマンドとは何ですか? fuser コマンドは、特定のファイル、ディレクトリ、またはソケ...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

知っておくべきHTML最適化テクニック

Web ページのパフォーマンスを向上させるために、多くの開発者は、JavaScript、画像の最適化...

Flex レイアウトで適応型ページを作成する (構文と例)

Flex レイアウトの紹介英語の Flex はフレキシブル ボックス、つまり伸縮性のあるボックスを...