ホームページ  >  記事  >  データベース  >  SQL文の実行

SQL文の実行

coldplay.xixi
coldplay.xixi転載
2021-02-17 10:32:062416ブラウズ

SQL文の実行

推奨 (無料): SQL

Zero、データベース ドライバー

  • MySQL ドライバーは、最下位レベルでデータベースに接続するのに役立ちます。接続が確立されて初めて、その後の対話が可能になります。

1. データベース接続プール

  • データベース接続プールには、Druid、C3P0、DBCP が含まれます
  • 接続プールを使用すると、スレッドを常に作成および破棄することによるオーバーヘッドは、有名な「プーリング」のアイデアです。スレッド プールであっても、HTTP 接続プールであっても、その存在がわかります。

2. SQL インターフェイス

  • MySQL でリクエストを処理するスレッドは、リクエストを取得した後に SQL ステートメントを取得し、それを処理のために SQL インターフェイスに渡します。

3. クエリ パーサー

  • #SQL インターフェイスによって渡された SQL ステートメントを解析し、MySQL が理解できる言語に変換します。

4. MySQL クエリ オプティマイザー

  • MySQL は、最小コスト原則 # に基づいて、対応するインデックスの使用を選択します。
  • コスト = IO コスト CPU コスト
  • IO コスト: つまり、ディスクからメモリにデータをロードするコストです。デフォルトでは、データ ページを読み取る IO コストは 1 です。 , MySQLはデータをページという形で読み込む、つまり、あるデータを利用する際に、そのデータだけでなく、そのデータに隣接するデータもメモリ上に読み込むという有名なプログラムです。局所性があるため、MySQL は毎回ページ全体を読み取り、1 ページのコストは 1 です。したがって、IO のコストは主にページのサイズに関係します
  • CPU コスト: データをメモリに読み込んだ後、データが条件を満たしているかどうかを検出することも必要ですソートやその他の CPU 操作のコストは明らかに、行数に応じて、デフォルトでレコード検出のコストは 0.2 に関連します。
  • MySQL オプティマイザは、

5 の実行コストが最小となる「IO コスト CPU」インデックスを計算します。ストレージ エンジン

    #クエリ オプティマイザーは、ストレージ エンジン インターフェイスを呼び出して SQL を実行します。これは、実際の
  • SQL の実行がストレージ エンジン で完了することを意味します。
  • データはメモリまたはディスクに保存されます
  • SQL が実行されるたびに、そのデータはメモリにロードされます。このメモリは InnoDB の非常に重要なコンポーネントです。 :
  • バッファ プール
##6. エグゼキュータ

エグゼキュータは最終的に一連の実行計画に従います ストレージ エンジン インターフェイスを呼び出して SQL の実行を完了します

SQL文の実行

7. バッファ プール

バッファ プール (バッファ プール) は、非常に重要なメモリ構造です。 InnoDB ストレージ エンジン。キャッシュの役割を果たします。
  • バッファ プールとは、初めてクエリを実行するときにクエリ結果をバッファ プールに保存することを意味します。の場合、最初にバッファ プールからクエリが実行されます。検索がない場合は、ディスク上で検索されてから、バッファ プールに配置されます。
  • バッファ プールで使用されるデータはロックされます。

  • Buffer Pool
8. 3 つのログ ファイル

1. Undo ログ ファイル

: 記録されたデータが変更される前外観

機能: UNDO ログ ファイルを使用してトランザクション ロールバックを完了します

SQL文の実行

2. REDO ログ ファイル

:変更されたデータの外観を記録します。

redo は、トランザクションが送信されたかどうかに関係なく、データ変更後の値を記録します。
  • MySQL 効率を向上させるために、これらの操作は最初にメモリに配置されて完了し、更新されたデータは REDO ログ バッファに記録され、その後、特定の機会にディスクに永続化されます。

  • SQL文の実行
3. Bin log ログ ファイル:

操作プロセス全体を記録します

実装方法 を使用してRecord メソッドredo ログレコードをループで書き込むメソッドで、最後まで書き込むと最初に戻ってループでログを書き込みます。 bin ログは追加で記録されます。ファイル サイズが指定値より大きい場合、以降のログは新しいファイルに記録されます利用シナリオ
プロパティ redo ログ bin ログ
ファイル サイズ REDO ログのサイズは固定です (設定で設定することもできます。通常はデフォルトで十分です) bin ログは、設定パラメータ を使用して # ごとに設定できます。 max_bin log_size ##bin logファイルのサイズ (ただし、通常は変更することはお勧めしません)。
redo ログは、InnoDB エンジン層によって実装されます (つまり、Innodb ストレージが原因で過剰なはい) bin log は MySQL レイヤーによって実装されており、すべてのエンジンは bin loglog
redo ログクラッシュ リカバリに適しています (クラッシュ セーフ) (これは実際には Redis の永続化機能に非常に似ています) bin ログマスター From に適していますレプリケーションとデータリカバリ
bin ログには操作記録全体が記録されます (これはマスター/スレーブレプリケーションにとって非常に重要です)

以上がSQL文の実行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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