この記事では、mysql アーキテクチャとストレージ エンジンの概要に関する関連知識を提供します。お役に立てば幸いです。
1. MySQL 構造システム
一般的に言えば、MySQL は次のようになります。ストレージ エンジン層は 3 つの層に分かれており、階層化をより詳細に行う場合は、ストレージ エンジン層をさらにエンジン層とストレージ層に分けることができます。一部のクライアントとリンク サービスです。これには、ローカル ソック通信や、クライアント/サーバー ツールによって実装されるほとんどの TCP/IP に似た通信が含まれます。主に、いくつかの接続処理、認可認証、および関連するセキュリティ ソリューションを完了します。スレッド プールの概念がこの層に導入され、認証を通じて安全にアクセスするクライアントにスレッドを提供します。 SSL ベースの安全なリンクもこの層に実装できます。また、サーバーは、安全にアクセスする各クライアントに対してサーバーが持つ操作権限を検証します。
サービス層
第 2 層のアーキテクチャは主に、SQL インターフェイスなどのコア サービス機能のほとんどを完了し、キャッシュされたクエリ、SQL 分析と最適化、および一部の組み込み機能を完了します。関数を実装します。プロシージャ、関数など、すべてのクロスストレージ エンジン機能もこの層に実装されます。この層では、サーバーはクエリを解析して対応する内部解析ツリーを作成し、テーブル クエリの順序の決定、インデックスを使用するかどうかなどの対応する最適化を完了し、最終的に対応する実行操作を生成します。 select ステートメントの場合、サーバーは内部キャッシュにもクエリを実行します。キャッシュ領域が十分に大きければ、大量の読み取り操作を解決する環境でシステムのパフォーマンスを大幅に向上させることができます。
エンジン層
ストレージ エンジン層、ストレージ エンジンは、MySQL でのデータの保存と取得を実際に担当し、サーバーは API を通じてストレージ エンジンと通信します。ストレージエンジンが異なれば機能も異なるため、ニーズに応じて適切なストレージエンジンを選択できます。
ストレージ層
データ ストレージ層は主にファイル システムにデータを保存し、ストレージ エンジンとの対話を完了します。他のデータベースと比較すると、MySQL は少し異なり、そのアーキテクチャはさまざまなシナリオに適用でき、適切に動作します。主にストレージ エンジンに反映されるプラグイン ストレージ エンジン アーキテクチャは、クエリ処理を他のシステム タスクやデータの保存と抽出から分離します。このアーキテクチャにより、ビジネス ニーズと実際のニーズに基づいて適切なストレージ エンジンを選択できます。
2. MySQL サーバーのコンポーネント
接続層コンポーネント
MySQL によって提供されるインタラクティブ コンポーネント (java、.net、など) PHP およびその他の言語は、このコンポーネントを使用して SQL ステートメントを操作し、SQL との対話を実現できますコネクタ: インタラクティブ インターフェイス
サービス層コンポーネント
接続プール: 接続プール コンポーネント
ユーザー接続、スレッド処理、およびキャッシュを必要とするその他の要件の管理とバッファーに使用されます
管理サービスとユーティリティ: 管理サービスとツール コンポーネント
バックアップとリカバリ、Mysql レプリケーション、クラスタリング、セキュリティ管理などのシステム管理および制御ツールに使用されます。
SQL インターフェイス: SQL インターフェイス コンポーネント
受け入れるために使用されます。 DML、DDL、ストアド プロシージャなどのユーザー SQL コマンドを実行し、最終結果をユーザーに返します。
パーサー: クエリ アナライザー コンポーネント
SQL コマンドが渡されるときパーサーにとって、それは検証と分析であり、まず SQL コマンド構文の正当性を分析し、SQL コマンドをデータ構造に分解しようとします。分解が失敗した場合は、SQL ステートメントが不当であることを示すプロンプトが表示されます
オプティマイザー: オプティマイザー コンポーネント
SQL ステートメントはクエリ オプティマイザーを使用して、クエリを実行する前にクエリを最適化します。
この選択クエリでは、最初にすべてのテーブルをクエリしてから年齢でフィルタリングするのではなく、まず where ステートメントに基づいて選択します
この選択クエリでは、すべての属性を取り出してからフィルター処理するのではなく、最初に ID と名前に基づいて属性投影を実行します。
- これら 2 つのクエリ条件を接続して最終的なクエリ結果を生成します
- キャッシュとバッファ: バッファ プール コンポーネント
- クエリ キャッシュにヒットしたクエリ結果がある場合、クエリ ステートメントはクエリ キャッシュからデータを直接フェッチできます。このキャッシュ メカニズムは、一連の小さなキャッシュで構成されます。たとえば、テーブル キャッシュ、レコード キャッシュ、キー キャッシュ、権限キャッシュなどです。
エンジン レイヤー コンポーネント
プラガブル ストレージ エンジン: ストレージ エンジン
ストレージ エンジンは、データの保存、インデックスの確立、クエリ データの更新などのテクノロジの実装です。ストレージ エンジンはライブラリ ベースではなくテーブル ベースです。したがって、ストレージ エンジンはテーブル タイプとも呼ばれます。テーブルの作成、データ ストレージ、取得、更新などはすべて MySQL ストレージ エンジンによって完了します。これは、MySQL ストレージ エンジンが MySQL で果たす重要な役割でもあります。
MYSQL はプラグイン ストレージ エンジン アーキテクチャを提供するため、ユーザーはさまざまなニーズに応じてデータ テーブルにさまざまなストレージ エンジンを選択できます。また、ユーザーは独自のストレージ エンジンを作成したり、ニーズに応じてストレージ エンジンを作成したりすることもできます。異なるストレージ エンジンを使用するライブラリ内の異なるテーブルも許可されます。
ストレージ層コンポーネント
ファイル システム: ファイル システム
は、実際に MySQL を保存するために使用されます。データベース ファイルや一部のログ ファイルなど。一般的なものには Linux、Windows などが含まれます。
3. ストレージ エンジン
一般的に使用されるストレージ エンジンの違い
MySQL バージョン 5.5 より前のバージョンでは、デフォルトのストレージ エンジンは MySQL に付属する MyISAM でした。バージョン 5.5 以降、デフォルトのストレージ エンジンは、MySQL 用にサードパーティ企業によって開発された InnoDB に変更されました。なぜ変更するのでしょうか?
主な理由は、InnoDB がトランザクションと行レベルのロックをサポートしており、ビジネスの一貫性要件が高いシナリオにより適しているためです。
さまざまなストレージ エンジンのテーブル作成ステートメント:
CREATE TABLE `user_innodb` ( `id` int(11) PRIMARY KEY AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `gender` tinyint(1) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `user_myisam` ( `id` int(11) PRIMARY KEY AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `gender` tinyint(1) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; CREATE TABLE `user_memory` ( `id` int(11) PRIMARY KEY AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `gender` tinyint(1) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL ) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4; CREATE TABLE `user_archive` ( `id` int(11) PRIMARY KEY AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `gender` tinyint(1) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL ) ENGINE=Archive DEFAULT CHARSET=utf8mb4; CREATE TABLE `user_csv` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `gender` tinyint(1) NOT NULL, `phone` varchar(11) NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8mb4;
InnoDB
InnoDB ストレージ エンジンは、現在の MySQL のデフォルトのストレージ エンジンです。 InnoDB ストレージ エンジンは、コミット、ロールバック、およびクラッシュ回復機能を備えたトランザクション セキュリティを提供します。ただし、MyISAM のストレージ エンジンと比較すると、InnoDB の書き込み処理効率は低く、データとインデックスを保持するためにより多くのディスク領域を消費します。
InnoDB ストレージ エンジンの特性は他のストレージ エンジンとは異なります:
- トランザクション制御
- 外部キー制約
InnoDBストレージ テーブルとインデックス付けには 2 つの方法があります:
- 共有テーブル スペース ストレージを使用します。この方法で作成されたテーブルのテーブル構造は .frm ファイルに保存されます。データとインデックスは次の場所に保存されます。 innodb_data_home_dir および innodb_data_file_path. によって定義されたテーブルスペース (複数のファイルにすることができます)。
- マルチテーブルスペースストレージを使用する: この方法で作成されたテーブルのテーブル構造は .frm ファイルにまだ存在しますが、各テーブルのデータとインデックスは .ibd に個別に保存されます。
InnoDB 適切な使用環境:
InnoDB は MySQL のデフォルトのストレージ エンジンであり、トランザクション処理アプリケーションに使用され、外部キーをサポートします。アプリケーションのトランザクション整合性に対する要件が比較的高く、同時実行条件下でのデータの一貫性が必要であり、データ操作に挿入やクエリに加えて多くの更新操作や削除操作が含まれる場合は、InnoDB ストレージ エンジンがより適切な選択肢です。
InnoDB ストレージ エンジンは、削除や更新によって発生するロックを効果的に削減することに加えて、トランザクションの完全な送信とロールバックを保証することもできるため、比較的高いデータ精度を必要とする請求システムや金融システムなどのシステムに適しています。 . システムでは、InnoDB が最適な選択です。
MyISAM
MyISAM は、トランザクションや外部キーをサポートしていません。その利点は、高速アクセスと、トランザクションの整合性または主に SELECT と INSERT の要件がないことです。基本的に、どのアプリケーションでもこのエンジンを使用して、テーブルを作成します。
には次の 2 つの重要な機能があります。
- トランザクションをサポートしません
- ファイル保管方法
各 MyISAM はディスク上にあります。ファイル名はテーブル名と同じですが、拡張子は
- .frm (格納テーブル定義);
- .MYD(MYData, Store data);
- .MYI(MYIndex, storageindex);
MyISAM の適切な利用環境:
読み取り操作と挿入操作が主なアプリケーションの場合、更新操作と削除操作はほとんどなく、トランザクションの整合性と同時実行性の要件はそれほど高くないため、このストレージ エンジンの選択は非常に適しています。
MEMORY
メモリ ストレージ エンジンは、テーブル データをメモリに保存します。各 MEMORY テーブルは、実際には .frm 形式のディスク ファイルに対応します。このファイルにはテーブルの構造のみが保存され、そのデータ ファイルはメモリに保存されます。これにより、データ処理が高速になり、テーブル全体の効率が向上します。 。
MEMORY タイプのテーブルは、データがメモリに保存され、デフォルトで HASH インデックスが使用されるため、アクセスが非常に高速ですが、サービスがシャットダウンされると、テーブル内のデータは失われます。
MEMORY 適切な使用環境:
すべてのデータを RAM に保存します。これにより、高速な位置記録やその他の同様のデータ環境が必要な場合に、いくつかのアクセス ブロックを提供できます。
MEMORY の欠点は、テーブルのサイズに制限があることです。大きすぎるテーブルはメモリにキャッシュできません。次に、テーブル内のデータを復元できることを確認する必要があります。 . テーブル内のデータは、データベースが異常終了した後に復元できます。 MEMORY テーブルは通常、アクセス結果を迅速に取得するために更新頻度が低い小さなテーブルに使用されます。
MERGE
MERGE ストレージ エンジンは、一連の MyISAM テーブルの組み合わせです。これらの MyISAM テーブルは同じ構造を持つ必要があります。MERGE テーブル自体にはデータは格納されません。MERGE タイプのテーブルは次のとおりです。クエリと更新、削除操作、これらの操作は実際には内部 MyISAM テーブルに対して実行されます。
MERGE タイプのテーブルの挿入操作の場合、挿入されたテーブルは INSERT_METHOD 句によって定義され、3 つの異なる値を持つことができます。FIRST または LAST の値を使用すると、挿入操作は最初の値または LAST 値に適用されます。テーブル上で、この句が定義されていないか、NO として定義されている場合、この MERGE テーブルに対して挿入操作を実行できないことを意味します。
MERGE テーブルに対して DROP 操作を実行できますが、この操作は MERGE テーブルの定義を削除するだけであり、内部テーブルには影響しません。
MERGE 適切な使用環境:
一連の等価な MyISAM テーブルを論理的に結合し、オブジェクトとして参照するために使用されます。
MERGE テーブルの利点は、単一の MyISAM テーブルのサイズ制限を突破できることです。また、異なるテーブルを複数のディスクに分散することで、MERGE テーブルのアクセス効率を効果的に向上させることができます。これは、データ ウェアハウジングなどの VLDB 環境に非常に適しています。
推奨学習: mysql ビデオ チュートリアル
以上がMySql 最適化アーキテクチャとストレージ エンジン (概要共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

MySQLは、データストレージ、管理、クエリ、セキュリティに適したオープンソースのリレーショナルデータベース管理システムです。 1.さまざまなオペレーティングシステムをサポートし、Webアプリケーションやその他のフィールドで広く使用されています。 2。クライアントサーバーアーキテクチャとさまざまなストレージエンジンを通じて、MySQLはデータを効率的に処理します。 3.基本的な使用には、データベースとテーブルの作成、挿入、クエリ、データの更新が含まれます。 4.高度な使用には、複雑なクエリとストアドプロシージャが含まれます。 5.一般的なエラーは、説明ステートメントを介してデバッグできます。 6.パフォーマンスの最適化には、インデックスの合理的な使用と最適化されたクエリステートメントが含まれます。

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

INNODBのロックメカニズムには、共有ロック、排他的ロック、意図ロック、レコードロック、ギャップロック、次のキーロックが含まれます。 1.共有ロックにより、トランザクションは他のトランザクションが読み取らないようにデータを読み取ることができます。 2.排他的ロックは、他のトランザクションがデータの読み取りと変更を防ぎます。 3.意図ロックは、ロック効率を最適化します。 4。ロックロックインデックスのレコードを記録します。 5。ギャップロックロックインデックス記録ギャップ。 6.次のキーロックは、データの一貫性を確保するためのレコードロックとギャップロックの組み合わせです。

MySQLクエリのパフォーマンスが低いことの主な理由には、インデックスの使用、クエリオプティマイザーによる誤った実行計画の選択、不合理なテーブルデザイン、過剰なデータボリューム、ロック競争などがあります。 1.インデックスがゆっくりとクエリを引き起こし、インデックスを追加するとパフォーマンスが大幅に向上する可能性があります。 2。説明コマンドを使用してクエリ計画を分析し、オプティマイザーエラーを見つけます。 3.テーブル構造の再構築と結合条件を最適化すると、テーブルの設計上の問題が改善されます。 4.データボリュームが大きい場合、パーティション化とテーブル分割戦略が採用されます。 5.高い並行性環境では、トランザクションの最適化とロック戦略は、ロック競争を減らすことができます。

データベースの最適化では、クエリ要件に従ってインデックス作成戦略を選択する必要があります。1。クエリに複数の列が含まれ、条件の順序が固定されている場合、複合インデックスを使用します。 2。クエリに複数の列が含まれているが、条件の順序が修正されていない場合、複数の単一列インデックスを使用します。複合インデックスは、マルチコラムクエリの最適化に適していますが、単一列インデックスは単一列クエリに適しています。

MySQLスロークエリを最適化するには、slowquerylogとperformance_schemaを使用する必要があります。1。LowerQueryLogを有効にし、しきい値を設定して、スロークエリを記録します。 2。performance_schemaを使用してクエリの実行の詳細を分析し、パフォーマンスのボトルネックを見つけて最適化します。

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
