目次
mysql アーキテクチャ
ホームページ データベース mysql チュートリアル mysqlの理論と基礎知識を詳しく紹介

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

Jun 10, 2021 am 09:27 AM
mysql

この記事では、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

SQLが行を削除した後にデータを回復する方法 SQLが行を削除した後にデータを回復する方法 Apr 09, 2025 pm 12:21 PM

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

See all articles