ホームページ >データベース >mysql チュートリアル >共通の部分式スプールを使用すると、ウィンドウ集計クエリで予想外に高い論理読み取りが表示されるのはなぜですか?

共通の部分式スプールを使用すると、ウィンドウ集計クエリで予想外に高い論理読み取りが表示されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 05:57:14345ブラウズ

Why Are My Windowed Aggregate Queries Showing Unexpectedly High Logical Reads When Using Common Subexpression Spools?

共通の部分式スプールを使用したウィンドウ集計関数の論理読み取りが高くなるのはなぜですか?

実行プランで共通の部分式スプールを使用すると、特にウィンドウ集計関数の場合、驚くほど高い論理読み取りが発生します。大きなテーブルの場合が観察されています。この動作により、このようなスプールの効率について懸念が生じます。

根本原因: ワークテーブルの論理読み取りの一意のカウント

従来のスプール テーブルとは異なり、ワークテーブルの論理読み取りは、集計に使用される内部構造です。 、カウント方法が異なります。ハッシュされたページを測定する代わりに、ワークテーブルの論理読み取り数は、読み取り行ごとに増分されます。このユニークなカウント方法では、ワークテーブルの効率が高いにもかかわらず、カウントが一見高くなるように見えます。

式を理解する

特定のケースでは、発見した式、「ワークテーブルの論理読み取り = 1 NumberOfRows 2 NumberOfGroups 4」は、これらの特定の動作により当てはまります。 spools:

  • 1 : 初期オーバーヘッドと最後のダミー行
  • NumberOfRows * 2: 両方のセカンダリ スプールの完全読み取り
  • グループ数 * 4: プライマリ スプールは (NumberOfGroups 1) 行を発行します
追加のインサイト

    プライマリ スプールは、最終グループの終了を通知するために追加の行を発行します。
  • この数式は最終コンポーネントのこの余分な行を考慮しており、 NumberOfGroups 1.
トラブルシューティングのヒント

ページ読み取りのトレースはワークテーブルのオプションではありませんが、これらの独自のカウント メカニズムを理解すると、観察された大量の論理読み取りを説明するのに役立ちます。

参照

さらに詳しくは、以下を参照してください。 to:

    クエリ チューニングと最適化ブック、第 3 章
  • 一般的な部分式スプールに関する Paul White のブログ投稿

以上が共通の部分式スプールを使用すると、ウィンドウ集計クエリで予想外に高い論理読み取りが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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