MySQLのシリーズ:SQL、MySQLはどのように仕事にありますか?

MySQLの場合、実際には、それは、クライアントとサーバに分かれています。

  • サーバー、我々はサービスを開始するネットスタートmysqlコマンドを使用する場合、実際には、MySQLサーバーを開始した、というのMySQLアプリケーション。

  • クライアントがサーバからのデータをサーバに要求を送信し、フェッチを担当し、クライアントは多くの形態をとることができ、我々は、データベース接続などNativecat我々が使用する、SQLyogのかもしれmysqlの-uroot -p1234黒いウィンドウで開くことができますツールは、でも私たちのプログラムは、MySQLクライアントと呼ばれることができます。

我々は、ウィンドウを入力するか、MySQLのSQLデータベース接続ツールにする場合と、我々は最終的に、必要なデータを取得することができますどのようにこの中間のMySQLの作品ですか!

私たちはSQLを実装した後、例えば、シンプルな*名=「yanger」は、クライアントがサーバ、リクエストが到達するサーバー層に要求を送信し、ユーザから、コネクタ、クエリキャッシュ、アナライザ、オプティマイザ、エグゼキュータを通過する]を選択します等、ファイルシステムにストレージエンジンまたは挿入データから最終的なファイル・システム・データによって得られました。

コネクタ

クライアントが接続を開始する際には、ユーザー名、パスワード、サーバプログラムは、認証用のクライアントプログラムを提供する認証が失敗した場合、サーバープログラムが接続を拒否することをホスト情報を運ぶために必要です。

接続は、彼らがよりよく知っているコマンド。

mysql -h$ip -P$port -u$user -p

敗者は、コマンドの後に、必要が、パスワードは直接-pに続くことができるパスワードを入力し続けることが、これは本番サーバであっても、強くあなたがこれをしないことが推奨され、パスワードの開示をもたらすことができます。

MySQLは、サーバとクライアントのネットワーク通信プロトコル間としてTCPを使用して、TCPハンドシェイクが完了し、暗号チェックサム許可のコネクタ主な仕事は、取得します。

  • ユーザー名またはパスワードが間違っている場合は、「アクセスが拒否されたユーザーのために、」エラーが表示されます

  • ユーザー名とパスワードの認証場合は、テーブルに接続する権限は、あなたが持っている権限がわかります。その後、この時点では読み取り権限に依存し、接続許可決意ロジック

より多く使用していないこの時間よりも、自動的に切断される場合は、MySQLのデフォルトの接続は、パラメータWAIT_TIMEOUTで制御8時間、で、操作の後、エラーがクエリの中のMySQLサーバへの接続が失われたがスローされます。

クエリキャッシュ

後でクエリ内の場合は、MySQLがクエリ要求を取得するには、クエリキャッシュは、第一印象は、この文の前に実行文の前に実行され、その結果が直接、形成するためのキーと値のペアかもしれないされますメモリにキャッシュされました。キャッシュがヒットした場合、直接の結果が返されます。あなたは、クエリの実行フェーズをキャッシュしない場合、我々は背後に継続されます。実行が完了すると、結果がクエリキャッシュに格納されます。

文が含まれている更新、挿入または削除するには、ステートメントのために、MySQLは更新要求を受信すると、キャッシュは、データがクリアキャッシュに関連するすべてのテーブルを照会します。

私たちは長いが更新されると、キャッシュが失敗することを確認することができ、実際に、ある、実際には、より頻繁に更新される通常のビジネスのために、MySQLのクエリキャッシュのヒット率が非常に高く、それは一般的に開かないよう推奨されていません。

クエリキャッシュは、機能DEMANDのquery_cache_typeを設定することでオフにすることができます。実際には、MySQLのバージョン8.0で、それが直接クエリキャッシュでこの機能を削除されます。

アナライザ

分析プロセスのコンパイルは、本質的にMySQLを分析することで、字句、構文解析、意味解析フェーズを何をすべきか知っている解析する必要として、SQL文を解析するMySQLの最初の必要性を考えることができます。

ステートメントが間違っている場合、あなたが集中する必要がありますので、一般的な構文エラーが表示される最初のエラーを促し、エラー警告「あなたはあなたのSQL構文でエラーが発生している」を受信すると、すぐにコンテンツ「近く使用」です。

オプティマイザ

複数のテーブル(結合)に関連した文が、各テーブルを決め取得するアナライザの結果、MySQLはいくつかの最適化を行います使用するインデックスを決定する際に、例えば、テーブルの上に複数のインデックスがある、または接続シーケンス。

結果は、実行計画を生成するように最適化され、実行計画は、テーブル間の接続順が鋸引きされ、インデックスがクエリに使用すべきかを示しています。私たちは、文の実行計画を表示するには、EXPLAINステートメントを使用することができます。

ここでは\コマンドラインウィンドウでGは、ディスプレイに見やすい結果が逆立っすることはできません。

アクチュエータ

アナライザとオプティマイザ、正式に実行ステージの後が、実行する前に、許可が不十分なアクセス許可は、エラーが許可をスローされますかどうかを確認するために行われる必要があります。実際には、ときクエリキャッシュ、同じ権限チェックが行われます。

アクチュエータが開くようにした場合、テーブルの検証を続行します。テーブルを開き、アクチュエータは、エンジンへのインターフェースを使用し、エンジンの表に従って定義されます。

ストレージエンジン

MySQLのストレージエンジンは、一般的にはInnoDBとMyISAMの使用多くの種類をサポートし、MySQLのデフォルトのストレージエンジンはInnoDBがあります。

我々はInnoDBがテーブルの最初の行を取ることをクエリのInnoDBエンジンを選択した場合、結果セットの存在と一致要件を満たす、または表の最後の行まで、次の行に継続しないと判断されます。

そして、ストレージエンジンは、SQLの実装が完了したのでことを、アクチュエータは、クライアントに結果を保持し、アクチュエータに結果を返します。

おすすめ

転載: www.cnblogs.com/imyanger/p/11863293.html