今回やることを説明してみる
無駄なキャッシュプランを探します。
使用する環境を説明してみる
My Lenovo with SQL Server 2014 です。
試してみる
早速試してみましょう。無駄にキャッシュされている可能性が高い sys.dm_exec_cached_plans の usecounts が一回のものを抽出します。
SELECT [SQL文] = st.text, [SQLタイプ] = cp.objtype, [キャッシュ容量] = cp.size_in_bytes FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text(plan_handle) st WHERE cp.usecounts = 1 AND cp.cacheobjtype = N'Compiled Plan' AND cp.objtype IN (N'Adhoc', N'Prepared') ORDER BY cp.size_in_bytes DESC OPTION (RECOMPILE)
このような場合、パラメータ化クエリや optimize for ad hoc workloads の適用を考えましょう。また、キャッシュプランを残さない方法もあります。下記の記事を参考にしてください。
こんな時、RECOMPILE したほうがいいよねと思って記事書いてみた - 都内で働くSEの技術的なひとりごと
終わりに何か言ってみる
無駄なキャッシュプランは極力無くしていきましょう。チューニングはまだまだ続く....続く....続く....
※今までの記事でクエリの書き方が統一されていなかったですね。次回から今回の記事のような記述にします。テーブルの別名は、『AS』を付けないとか。なんか気分によって付けたり、付けなかったりするんですよね。
※Kindle版と書籍版。
Microsoft SQL Server 2014 Query Tuning & Optimization
- 作者: Benjamin Nevarez
- 出版社/メーカー: McGraw-Hill Osborne Media
- 発売日: 2014/10/07
- メディア: ペーパーバック
- この商品を含むブログを見る
Microsoft SQL Server 2014 Query Tuning & Optimization
- 作者: Benjamin Nevarez
- 出版社/メーカー: McGraw-Hill Osborne Media
- 発売日: 2014/09/12
- メディア: Kindle版
- この商品を含むブログを見る