#author("2019-05-17T10:17:44+00:00","default:admin","admin")
-[[統計:https://docs.microsoft.com/ja-jp/sql/relational-databases/statistics/statistics?view=sql-server-2017]]

-[[Does Updating Statistics Cause a Recompile if No Data Has Changed?:https://www.brentozar.com/archive/2015/01/updating-statistics-cause-recompile-no-data-changed/]]

-[[sys.dm_exec_query_stats (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-query-stats-transact-sql?view=sql-server-2017]]
-[[sp_autostats (TRANSACT-SQL):https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-autostats-transact-sql?view=sql-server-2017]]

-[[【統計情報】_WA_SYS_XXXについて:https://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20339&forum=26]]

-[[統計情報の自動更新に関する考察:https://blog.engineer-memo.com/2012/04/28/%E7%B5%B1%E8%A8%88%E6%83%85%E5%A0%B1%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%80%83%E5%AF%9F/]]
-[[統計情報のサンプリングの実行プラン:https://blog.engineer-memo.com/2014/11/15/%E7%B5%B1%E8%A8%88%E6%83%85%E5%A0%B1%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%83%97%E3%83%A9%E3%83%B3/]]

-[[統計情報の自動更新・手動更新の使い分け:https://techinfoofmicrosofttech.osscons.jp/index.php?SQL%20Server%20%E3%81%AE%E3%82%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%9E%E3%82%A4%E3%82%B6#b4304d99]]

-[[SQL Server 統計情報の自動更新:http://tech.kou.asia/?p=1672]]
-[[SQL Server 2008(2012)の統計自動更新について:トレースフラグ2371:http://azwoo.hatenablog.com/entry/2013/02/14/125848]]

*統計情報がらみのトラブル [#y77773d1]
-[[トラブルシューティングから学ぶSQL Server統計情報の更新タイミング:https://techblog.zozo.com/entry/sqlserver-troubleshooting-statistics]]
--[[SQL Database で VIEW SERVER STATE が必要なログインを複数作成する:https://blog.engineer-memo.com/2017/04/19/sql-database-%E3%81%A7-view-server-state-%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E8%A4%87%E6%95%B0%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/]]

-[[どうする? SQL Server のクエリ パフォーマンスが低下した!:https://blogs.msdn.microsoft.com/jpsql/2013/09/03/sql-server-5/]]

-[[「あるタイミングから」処理が遅くなり、再起動しても再現されてしまう(パフォーマンストラブル):https://www.atmarkit.co.jp/ait/articles/1706/12/news002.html]]

*統計情報の設定 [#ndf0a833]
-[[SQL Server の統計情報作成について書いてみた、ちょっとだけマジメにまとめてみた:http://ryuchan.hatenablog.com/entry/2014/03/23/184242]]

**小規模向け [#t2c8062f]
-統計情報の自動更新 :True
-統計情報の非同期更新:True

**大規模向け [#hdd76fef]
-統計情報の自動更新 :False

-統計情報を手動で作成
-統計情報を手動で更新

*統計情報の自動更新 [#z5e39e94]
-[[統計の更新:https://docs.microsoft.com/ja-jp/sql/relational-databases/statistics/update-statistics?view=sql-server-2016]]

-[[SQL Server 統計情報の自動更新:http://tech.kou.asia/?p=1672]]
-[[SQL Server 2008(2012)の統計自動更新について:トレースフラグ2371:http://azwoo.hatenablog.com/entry/2013/02/14/125848]]

-[[統計情報のサンプリングについて:https://blog.engineer-memo.com/2012/10/21/%E7%B5%B1%E8%A8%88%E6%83%85%E5%A0%B1%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/]]

**自動更新の条件 [#t2247d57]
-テーブル行数が0から非0に推移した
-前回統計情報が更新された際のテーブル行数が500以下で、統計情報収集対象列が501回以上更新された場合
-前回統計情報が更新された際のテーブル行数が501以上で、統計情報収集対象列が500+(テーブル行数の20%)回以上変更された
-一時テーブルの場合は、上述の基準に加え、テーブル行数が6行を超えた

*統計情報の非同期更新 [#e546fc24]
-[[SQL Server 統計の非同期的自動更新:http://d.hatena.ne.jp/fyts/20081112/async]]

-非同期自動更新のメリット
--オンライン系のシステム (OLTP) と相性がいい
--統計を同期的に更新しないため、タイムアウトが発生する確率が減る
-非同期自動更新のデメリット
--データウェアハウスなど大規模データをバッチで回すような場合に性能が劣化する
--シングルユーザモードの利用が出来なくなる

*統計情報自動更新OFFでのシステム運用 [#s74c9a6d]
-統計情報の自動更新がONの状態で、オンライン中に統計情報の更新が発生すると、性能的に問題が出ることがある。
-しかし、統計情報の自動更新をOFFにした場合、結局、統計情報が実データと乖離した際に問題が発生する。
-従って、統計情報更新のOFF運用は以下のようになると考える。
--サーバ・メンテナンス時間帯に統計情報の更新をONにして統計情報を更新する。
--STATS_DATE関数で、統計の最終更新日を確認できる。
--サーバ・メンテナンス時間帯に問題(乖離)を発見して手動更新する(難しい)。

--[[参考:【SQL Server】統計情報のヒストグラムと実行プランの予測行数 - 小物SEのメモ帳:http://memorandom-nishi.hatenablog.jp/entry/2017/02/18/021834]]
--注意:OFFだと、新たなインデックス追加時などにも統計情報が作成されなくなる。
--Missing Column Index イベントをトレースして統計情報のないIndexが通知を受け取ることができる。

*統計情報に関するSQL [#nef7ad0f]
-[[STATS_DATE (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/t-sql/functions/stats-date-transact-sql?view=sql-server-2017]]
-[[sys.dm_db_stats_properties (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-db-stats-properties-transact-sql?view=sql-server-2017]]

**最終更新日時・更新回数の確認 [#g6e9c80f]
 SELECT
     OBJECT_NAME(dsp.object_id) 
     , dsp.object_id 
     , ss.name
     , dsp.last_updated 
     , dsp.rows
     , dsp.rows_sampled 
     , dsp.steps 
     , dsp.unfiltered_rows 
     , dsp.modification_counter 
 FROM
     sys.stats AS ss 
     CROSS APPLY 
     sys.dm_db_stats_properties(ss.object_id, ss.stats_id) AS dsp 
 WHERE
     OBJECT_SCHEMA_NAME(dsp.object_id, DB_ID()) <> 'sys'

**統計情報更新 [#kfa63047]
 EXEC sp_updatestats;

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS