ホームページ  >  記事  >  データベース  >  mysqlの理論と基礎知識を詳しく紹介

mysqlの理論と基礎知識を詳しく紹介

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-10 09:27:182328ブラウズ

この記事では、mysql の理論と基礎知識を詳しく紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

mysqlの理論と基礎知識を詳しく紹介

mysql アーキテクチャ

1. ネットワーク接続層

クライアント コネクタ: MySQL の組み込みサポートを提供サーバ。現在、一般的な Java、C、Python、.NET など、ほとんどすべての主流のサーバー側プログラミング テクノロジがサポートされており、それぞれの API テクノロジを通じて MySQL との接続を確立します。

2. サービスレイヤー (MySQL Server)

サービス レイヤーは MySQL Server の中核であり、主にシステム管理および制御ツール、接続プール、SQL インターフェイス、パーサー、クエリ オプティマイザー、およびキャッシュの 6 つの部分で構成されます。

接続プール: クライアントとデータベース間の接続の保存と管理を担当し、1 つのスレッドが 1 つの接続の管理を担当します。

システム管理および制御ツール (管理サービスおよびユーティリティ): バックアップとリカバリ、セキュリティ管理、クラスター管理など。

SQL インターフェイス (SQL インターフェイス): さまざまなタイプを受け入れるために使用されます。クライアント SQL コマンドによって送信されたデータを収集し、ユーザーがクエリする必要がある結果を返します。 DML、DDL、ストアド プロシージャ、ビュー、トリガーなど。

Parser (パーサー): 要求された SQL を解析して「解析ツリー」を生成します。次に、いくつかの MySQL ルールに従って解析ツリーが正当であるかどうかをさらに確認します。

クエリ オプティマイザー (オプティマイザー): 「解析ツリー」がパーサー文法チェックに合格すると、オプティマイザーに渡されて実行プランに変換され、ストレージ エンジンと対話します。

select uid,name from user where virgin=1;

Select->>Projection->>Joinstrategy

1)select 最初に、where ステートメントに従って選択します。クエリ すべてのデータを抽出してフィルタリングします。

2) 選択クエリは、すべてのフィールドではなく、uid と名前に基づいて属性プロジェクションを実行します。

3) 前の選択とプロジェクションを接続して、最終的にクエリ結果

キャッシュ (キャッシュ&バッファ): キャッシュ メカニズムは、一連の小さなキャッシュで構成されます。たとえば、テーブル キャッシュ、レコード キャッシュ、権限キャッシュ、エンジン キャッシュなどです。クエリ キャッシュにヒットしたクエリ結果がある場合、クエリ ステートメントはクエリ キャッシュからデータを直接フェッチできます。

3. ストレージ エンジン層 (プラグ可能ストレージ エンジン)

ストレージ エンジンは、MySQL でのデータの保存と抽出を担当し、MySQL と対話します。基礎となるシステム ファイル。 MySQL ストレージ エンジンはプラグインであり、サーバーのクエリ実行エンジンはインターフェイスを介してストレージ エンジンと通信し、インターフェイスは異なるストレージ エンジン間の違いを保護します。現在、ストレージ エンジンは数多くあり、それぞれに独自の特徴がありますが、最も一般的なものは MyISAM と InnoDB です。

4. システム ファイル層 (ファイル システム)

この層は、データベース データとログをファイル システムに保存し、ストレージ エンジンとの対話を完了する役割を果たします。 、ファイルの物理ストレージ層です。主にログ ファイル、データ ファイル、設定ファイル、pid ファイル、ソケット ファイルなどが含まれます。

ログ ファイル

エラー ログ(エラー ログ)

デフォルトで有効になり、「%log_error%」のような変数を表示します

一般的なクエリ ログ( 一般的なクエリ ログ)

一般的なクエリ ステートメントを記録し、「%general%」などの変数を表示します。

バイナリ ログ (バイナリ ログ)

MySQL データベースで実行された変更を記録します。操作を実行し、ステートメントの発生時刻と実行時刻を記録しますが、データベースを変更しない select や show などの SQL は記録しません。主にデータベースのリカバリとマスター/スレーブ レプリケーションに使用されます。

show variables like '%log_bin%'; //有効にするかどうか

show variables like '%binlog%'; //パラメータ view

show binary logs; // スロー クエリ ログ ファイルを表示します。

クエリ ログ (スロー クエリ ログ)

実行時間が経過したすべてのクエリ SQL を記録します。デフォルトは 10 秒です。

show variables like '%slow_query%'; //有効にするかどうか

show variables like '%long_query_time%'; //Duration

設定ファイル

my.cnf、my.ini などのすべての MySQL 構成情報ファイルを保存するために使用されます。

データ ファイル

db.opt ファイル: このライブラリで使用されるデフォルトの文字セットと検証ルールを記録します。

frm ファイル: テーブル構造の定義情報など、テーブルに関するメタデータ (メタ) 情報が格納されます。各テーブルには frm ファイルが存在します。

MYD ファイル: MyISAM ストレージ エンジン専用であり、MyISAM テーブルのデータを保存します。各テーブルには .MYD ファイルがあります。

MYI ファイル: MyISAM ストレージ エンジン専用であり、MyISAM テーブルのインデックス関連情報を保存します。各 MyISAM テーブルは .MYI ファイルに対応します。

ibd ファイルおよび IBDATA ファイル: InnoDB データ ファイル (インデックスを含む) を保存します。 InnoDB ストレージ エンジンには、排他的テーブル スペースと共有テーブル スペースという 2 つのテーブル スペース モードがあります。排他的テーブル スペースは .ibd ファイルを使用してデータを保存し、各 InnoDB テーブルは 1 つの .ibd ファイルに対応します。共有テーブルスペースは .ibdata ファイルを使用し、すべてのテーブルは 1 つ (または複数の自己構成) .ibdata ファイルを使用します。

ibdata1 ファイル: テーブル メタデータ、Undo ログなどを保存するシステム テーブル スペース データ ファイル。

ib_logfile0、ib_logfile1 ファイル: REDO ログのログ ファイル。

pid ファイル

pid ファイルは、Unix/Linux 環境の mysqld アプリケーションのプロセス ファイルであり、他の多くの Unix/Linux サーバー プログラムと同様に、独自のプロセス ID を保存します。

ソケット ファイル

ソケット ファイルは Unix/Linux 環境でも利用でき、ユーザーは Unix Socket を使用して、TCP/を経由せずに Unix/Linux 環境のクライアントに接続できます。 IP ネットワーク MySQL に接続します。

InnoDB と MyISAM

トランザクションと外部キー

InnoDB は、セキュリティと整合性を備えたトランザクションと外部キーをサポートしており、大規模なシステムに適しています。挿入または更新操作の数

MyISAM はトランザクションと外部キーをサポートしません。高速なストレージと取得を提供し、多数の選択クエリ操作に適しています

ロック メカニズム

InnoDB は行レベルのロックをサポートし、指定されたレコードをロックします。ロックはインデックスに基づいて実装されます。

MyISAM はテーブルレベルのロックをサポートしており、テーブル全体をロックします。

インデックス構造

InnoDB はクラスター化インデックス (クラスター化インデックス) を使用しており、インデックスとレコードは一緒に保存され、インデックスとレコードの両方がキャッシュされます。

MyISAMはノンクラスタードインデックス(ノンクラスタードインデックス)を採用しており、インデックスとレコードが分離されています。

同時処理機能

MyISAM はテーブル ロックを使用するため、書き込み操作の同時実行率が低くなり、読み取り間のブロックがなくなり、読み取りと書き込みがブロックされます。

#InnoDB の読み取りおよび書き込みのブロックは分離レベルに関連付けることができ、マルチバージョン同時実行制御 (MVCC) を使用して高い同時実行性をサポートできます

#ストレージ ファイル

InnoDB テーブルは、.frm テーブル構造ファイルと .ibd データ ファイルの 2 つのファイルに対応します。 InnoDB テーブルは最大 64 TB をサポートします。

MyISAM テーブルは、.frm テーブル構造ファイル、MYD テーブル データ ファイル、および .MYI インデックス ファイルの 3 つのファイルに対応します。 MySQL 5.0 以降、デフォルトの制限は 256 TB です。

Redo Log と Binlog の違い


Redo Log は InnoDB エンジンの機能ですが、Binlog は MySQL Server の組み込み機能であり、バイナリファイルに記録されます。

Redo Log はデータページの更新ステータス内容を記録する物理ログ、Binlog は更新プロセスを記録する論理ログです。

Redo Log は循環的に書き込まれ、ログ領域のサイズは固定され、Binlog は追加で書き込まれ、1 つ書き込まれた後は次のログが書き込まれ、上書きされません。

Redo Log はサーバーの異常ダウン後のトランザクション データの自動回復に使用でき、Binlog はマスター/スレーブ レプリケーションとデータの回復に使用できます。 Binlog には自動クラッシュセーフ機能がありません。

アプリケーションでは、クエリを最適化するためにスレーブ データベースに複数のインデックスを追加できますが、書き込み効率を向上させるためにメイン データベースのこれらのインデックスを省略することもできます。


#読み取りと書き込みの分離スキーム

1書き込み直後に読み取り

データベースへの書き込み後、読み取り操作は 1 時間以内に完了します。一定時間メインライブラリに移動し、その後スレーブライブラリにリード操作でアクセスします。

2 セカンダリ クエリ

最初にスレーブ データベースに移動してデータを読み取ります。データが見つからない場合は、メイン データベースに移動してデータを読み取ります。この操作により、読み取り圧力がメイン ライブラリに簡単に返されます。悪意のある攻撃を回避するために、データベース アクセス API 操作をカプセル化することをお勧めします。これは、セキュリティと低結合に有益です。

3特殊な業務処理に応じて

ビジネスの特性や重要度に応じて調整たとえば、リアルタイム性の高い重要な業務データの読み書きをメインデータベースに配置することが可能です。高いリアルタイム性を必要としない副業の場合は、読み取りと書き込みを分離し、データベースからクエリを実行できます。

関連する推奨事項: 「

mysql チュートリアル

以上がmysqlの理論と基礎知識を詳しく紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。