正月休みも終わりました。年末年始の暴飲暴食のため胃腸がボロボロです。お粥を食べたい気分です。
- 出版社/メーカー: ほんまもん屋
- メディア: その他
- この商品を含むブログを見る
そして、終いには腰もやってしまうという始末....正月でかなり気分もだらけてしまったので、気合を入れるため早速記事を書きたいと思います。今回は、ブロッキングオペレータ ( Blocking Operator ) とブロッキングしないオペレーター ( Non-Blocking Operator ) について説明します。(各種オペレータを説明する上で、必要かなーと思ったので。あと、チューニングする上でも知っておいたほうがよいです。)
昨年度末に下記の二つ記事を投稿しました。
ryuchan.hatenablog.com
ryuchan.hatenablog.com
結論から言うと、Stream Aggregate がブロッキングしないオペレーター ( Non-Blocking Operator ) で、Hash Aggregate がブロッキングオペレータ ( Blocking Operator )です。
Stream Aggregate は集計に使用するキーが並べかえられているのが前提のオペレータ処理です。Stream Aggregate は下図のように処理されます。少ない単位で処理ができ、次のオペレータに処理を行うことができるので、リソースの使用効率が非常にいいオペレータです。
※実行プランの Stream Aggregate オペレーターのアイコンがまさに処理内容を表現してますね。
Hash Aggregate は集計に使用するキーが並べかえられていない場合のオペレータ処理です。Hash Aggregate は下図のように処理されます。一度対象データすべて抱える必要があり、且つ集計がすべて完了するまでは次のオペレータの処理ができません。
参考までですが、下記のように Hash Aggregate が発生しているクエリに OPTION句 を足すことで Stream Aggregate に変更することができます。ブロッキングオペレータの Sort オペレータが発生しているので、パフォーマンスチューニングとしては、あまり意味がないかもしれません。
SELECT ModifiedDate, COUNT(ModifiedDate) FROM Sales.SalesOrderHeader GROUP BY ModifiedDate OPTION (ORDER GROUP);
ORDER GROUP を指定すると、Hash Aggregate が発生させる workfile 処理がなくなります。どちらが効率的なのでしょうか?OPTION (ORDER GROUP) を指定しない場合、workfile と worktable を二つ必要とするので、OPTION (ORDER GROUP) を指定したほうが効率的な気もしますが....(時間があるときにでも、検証してみよう)
- OPTION (ORDER GROUP)を付加した場合
- OPTION (ORDER GROUP)を付加しない場合
今回の内容から少しそれてしまいました。次回は Spool 系のオペレータについて説明します。
- Eager Spool
- Lazy Spool
はて?なんなんでしょうか?熱心なSpool と怠けた Spool ?
※うう、腰がまだ痛い。
- 出版社/メーカー: 興和新薬
- 発売日: 2009/04/01
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る
バンテリンサポーター 腰用 しっかり加圧タイプ ブラック 大きめサイズ 胴囲 80~100cm
- 出版社/メーカー: 興和新薬
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る