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はグローバル箇条書きボックスメソッドをカプセル化します

推薦する

React における useEffect と useLayoutEffect の違い

目次前提条件使用効果コミット前ミューテーション効果コミットミューテーション効果コミットレイアウト効果...

JavaScriptはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機能を実装するためのJavaScriptの具体的なコードを紹介し...

JS と Nodejs におけるイベント駆動型開発についての簡単な説明

目次イベント駆動型とパブリッシュ・サブスクライブ型ブラウザの JavaScript ではイベント駆動...

オンライン MYSQL 同期エラーのトラブルシューティング方法の概要 (必読)

序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...

Vue双方向バインディングの詳細な説明

目次1. 双方向バインディング2. 他のタグを選択した場合にも同じ結果になりますか? 答えはもちろん...

MySQL/MariaDB ルートパスワードリセットチュートリアル

序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...

ウェブページでコンテンツを引用するためによく使われるHTMLタグをマスターする

長い引用には blockquote を、短い引用には q を、参考文献には cite を使用します。...

WeChat アプレットのカスタム下部ナビゲーション バー コンポーネント

この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...

非常に便利なオープンソース Docker ツール 5 つを強くお勧めします

導入Docker コミュニティは、さまざまなユースケースを処理するのに役立つ多くのオープンソース ツ...

Linux インストール MySQL チュートリアル (バイナリ配布)

このチュートリアルでは、LinuxにMySQLをインストールする詳細な手順を参考までに紹介します。具...

React における ref の一般的な使用法の概要

目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....

MySQL でデータの重複挿入を回避する 4 つの方法

最も一般的な方法は、フィールドに主キーまたは一意のインデックスを設定することです。重複データを挿入す...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...

MySQLでSELECT文が実行される仕組み

目次1. マクロの観点からMySQLを分析する2. SQL ステートメントを実行するには、どの程度の...

MySQL 匿名ログインでデータベースを作成できない問題の解決方法

よくある質問ユーザー ''@'localhost' によるデータベー...