MySQLの論理アーキテクチャに関する深い理解

MySQLの論理アーキテクチャに関する深い理解

MySQL は現在、ほとんどの企業や事業体で使用されているデータベースです。MySQL が使用される理由は、MySQL がオープンソース ソフトウェアであるためです。有能な企業の中には、既存の MySQL アーキテクチャを自社のビジネス ニーズに合わせて変更、調整するところもあります。

理由の 1 つは、MySQL は無料であるのに対し、Oracle サービスは比較的高価であることです。多くのスタートアップ企業にとって、MySQL は最も適したデータベースです。

MySQL の論理アーキテクチャを理解する必要がある理由は、自分たちで開発を行うときと同じように、まずは自分のシステムで使用されている階層化アーキテクチャを習得して、開発プロセス中にリンクに問題が発生した場合にトラブルシューティングが容易になるようにするためです。 MySQL の論理アーキテクチャを理解する場合も同様です。MySQL を使用する場合、問題がいつ発生するかはわかりませんが、問題が発生したときに (クエリ SQL の最適化、どこから始めるかなど)、問題をより明確に特定できます。

1.接続

Mysqlサーバーに接続するために、Mysqlサービスにクライアントとして接続します。Mysqlはさまざまなプログラミング言語プラットフォームに接続できます。

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

バックアップ、復元、レプリケーション、クラスタリングなどの MySQL サービスの管理および制御ツールとして。

3. 接続プール

接続プールの主な機能は、接続認証、スレッドの再利用、接続数の制限などを提供することです。

4.SQLインターフェース

ここでは主に、Mysql DML、DDL ステートメント、およびストアド プロシージャ、ビュー、トリガーなどを受け取ります。

5. 解析する

ここで重要なのは、渡されたSQL文字列を解析することです。たとえば、私たちが初めて触れたJDBCプログラミングでは、文字列型のSQL文をMySQLに送信し、パーサーはまずSQL文に対して字句解析を実行して構文ツリーを形成し、次に構文ツリーに対して文法解析を実行して各単語セグメントがSQL92標準を満たしているかどうかを確認します。満たしている場合は、次の業務処理リンクを実行します。

6. クエリオプティマイザー

クエリ オプティマイザーは、渡された SQL ステートメントを分析して、主に次の 3 つの側面に焦点を当てて、それが最適な実行ステートメントであるかどうかを判断します。
* どのインデックスを使用するか(テーブルには複数のインデックスがあり、最もフィルタリング能力の強いインデックスを選択します)
* 複数テーブル関連付けのテーブル接続順序
* WHERE条件の順序(MYSQLの左端プレフィックスの原則に従って、条件の順序は並べ替えられます)

7. クエリ キャッシュ (キャッシュとバッファ)

MYSQL は各 SQL 文をハッシュし、そのハッシュ値をマップに格納します。SQL 文が来るたびに、まず SQL 文のハッシュ値が計算され、同じかどうかが確認されます。同じであれば、新しい SQL 文を解析して最適化しなくても、メモリ内の SQL 文を実行できるため、実行効率が向上します。

8. プラグ可能なストレージエンジン

MSQL ストレージ エンジンはプラグ可能な機能をサポートしており、ユーザーは使用したいストレージ エンジンを自由に置き換えたり、独自のストレージ エンジンをカスタマイズしたりできます。ここでは、主に INNODB ストレージ エンジンと MYISAM ストレージ エンジンを分析および比較します。

通常、ストレージ エンジンを選択する場合は、主にビジネス ニーズに基づいて選択する必要があり、それぞれの特性を参照できます。

ストレージ エンジンの選択:

InnoDB:

トランザクション処理、外部キー、クラッシュ回復機能、同時実行制御をサポートします。トランザクションの整合性に対する要件が厳しい場合 (銀行など) や同時実行制御が必要な場合 (チケット販売など) は、InnoDB を選択すると大きなメリットがあります。頻繁に更新や削除操作を行うデータベースが必要な場合は、トランザクションのコミットとロールバックをサポートしている InnoDB を選択することもできます。

マイISAM:

データの挿入は高速で、スペースとメモリの使用量も比較的少なくなります。テーブルが主に新しいレコードの挿入とレコードの読み取りに使用される場合は、MyISAM を選択すると高い処理効率を実現できます。アプリケーションの整合性と同時実行性の要件が比較的低い場合は、これを使用することもできます。

メモリ:

すべてのデータはメモリ内に保存されており、データ処理速度は高速ですが、セキュリティは高くありません。高速な読み取りおよび書き込み速度が必要で、データ セキュリティの要件が低く、永続的なストレージを必要としない場合は、MEMOEY を選択できます。テーブルのサイズには要件があり、大きすぎるテーブルを作成することはできません。したがって、このタイプのデータベースは、比較的小さなデータベース テーブルでのみ使用されます。

これは、MYSQL の簡単な実行フローチャートです。このチャートにより、MYSQL の全体的な実行プロセスを明確に理解できます。

これで、MYSQL の論理アーキテクチャの紹介は終わりです。もちろん、MYSQL にも対応する物理アーキテクチャがありますが、この部分は主に MYSQL のさまざまなログ ファイルと、各テーブルのデータ ファイルとインデックス ファイルに関係しており、これらについては次の章で紹介します。

上記は、MySQL 論理アーキテクチャの詳細な理解に関する内容です。MySQL 論理アーキテクチャの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

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

<<:  Docker イメージのローカル Elasticsearch ポート操作へのアクセス

>>:  Reactはグローバル箇条書きボックスメソッドをカプセル化します

推薦する

MySQL無料インストール版のパスワード設定に関する詳細なチュートリアル

方法1: SET PASSWORDコマンドを使用する MySQL -u ルート mysql> ...

Vue は better-scroll を使用して水平スクロール方法の例を実現します

1. スクロールの実装原理better-scroll のスクロール原理は、ブラウザのネイティブスクロ...

dockerでifconfigが利用できない問題を解決する

最近、docker を学習していたときに、docker コンテナ内のネットワーク状態を照会するために...

MySQL 30軍事ルールの詳細な説明

1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...

ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

プロフェッショナルな Web デザインは複雑で時間がかかります。 HTML と CSS フレームワー...

nginx の default_server 定義とマッチングルールの詳細な説明

nginx の default_server ディレクティブは、server_name と一致しない...

MySQL 5.7.29 + Win64 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

公式サイトをダウンロード自分に合ったバージョンを選択してダウンロードしてください。 ダウンロードをク...

MySQL 5.7.18 でパスワードを変更する方法

MySQL 5.7.18 でパスワードを変更する方法: 1. まずMySQLサーバーをシャットダウン...

少なくとも7日間連続して注文を行ったユーザーに対するSQLクエリ

テーブルを作成するテーブル order(id varchar(10),date datetime,o...

case when文のエラー問題の詳細な説明

序文MySQL データベースでは、if else のような判断演算を使用することがあります。では、M...

MySQL における datetime と timestamp の違いと選択

目次1 違い1.1 スペース占有1.2 表現範囲1.3 タイムゾーン2 テスト3つの選択肢MySQL...

Vue 2.0 の基礎を詳しく解説

目次1. 特徴2. 例3. オプション4. 基本的な文法5. ライフサイクル6. ルーティング管理 ...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

MySQL 5.7.18 無料インストール版ウィンドウ設定方法

初めてのブログです。データベースの勉強を始めた頃のことを書いています。自分でダウンロードしたのですが...

JSはリクエストディスパッチャーを実装する

目次抽象化と再利用シリアルセグメントシリアル、セグメントパラレル要約するはじめに: JS は当然並列...