都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

いまさらだなぁと思いつつ、キャッシュプランがどのくらいのサイズがあるのか確認してみる

 怒涛の出張が継続しております。今年も出張三昧です(笑)(´;ω;`)
f:id:koogucc11:20170907233018p:plain

 さて、今回チューニングの一環で指示により、キャッシュプランが増えそうだなぁというクエリになりそうで..... あ、そういえばキャッシュプランのサイズって一度もみたことないとふと思ったので、早速サイズをチェックしてみました。下記のクエリを SQL Server Management Studio で実行してみましょう。各クエリのキャッシュサイズが確認できます。

SELECT
    [クエリ] = st.text,
    [キャッシュサイズ(byte)] = cp.size_in_bytes
FROM
    sys.dm_exec_cached_plans cp
    CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
WHERE
    cp.cacheobjtype = 'Compiled Plan'

f:id:koogucc11:20170907232701p:plain

 総合計を出力してみます。あれ、エラーでました。int の範囲を超えるサイズがキャッシュされているのか。

SELECT
    [キャッシュサイズ合計(byte)] = SUM(cp.size_in_bytes)
FROM
    sys.dm_exec_cached_plans cp
WHERE
    cp.cacheobjtype = 'Compiled Plan'

f:id:koogucc11:20170907232718p:plain

 BIGINT でキャストしましょう。正しく出力できました。こんなにキャッシュされていたのか...普通なのでしょうか?

SELECT
    [キャッシュサイズ合計(byte)] = SUM(CAST(cp.size_in_bytes AS BIGINT))
FROM
    sys.dm_exec_cached_plans cp
WHERE
    cp.cacheobjtype = 'Compiled Plan'

f:id:koogucc11:20170907232725p:plain

 Mac Book Pro ほしい。

 けど、Lenovo Yoga 920 もいいな。
www3.lenovo.com

 シャンパンゴールドがなくなったのは、非常に残念。けど、ブロンズいいな。
f:id:koogucc11:20170907234441p:plain
f:id:koogucc11:20170907234434p:plain