#author("2018-01-31T08:05:39+00:00","default:admin","admin") *SQL Server チューニングのポイント [#qbcbf991] -[[SQL Server のチューニングについてまとめてみる - その 22 - ( これだけ分かっていればいいと思われる記事をまとめてみる ):http://ryuchan.hatenablog.com/entry/2016/10/09/174406]] **インデックス不足解消 [#md3eb931] -基本中の基本 **暗黙の型変換の抑制 [#b417c5d8] -条件に指定するカラムに対し、違う型の値で条件を指定すると「暗黙の型変換(CONVERT_IMPLICIT )」が発生する -Index Scan が発生することでパフォーマンスが落ちる -Index Scan を発生させないためには、暗黙の型変換を発生させないように、正しい型で条件を設定する必要がある --例:nvarchar の列に対して、正しい型で条件を指定 ---×:WHERE NationalIDNumber = 295847284 ---○:WHERE NationalIDNumber = N'295847284' **コンパイル回数の低減 [#e3cd4cbd] *SQL [#l7e59dbd] -SET STATISTICS PROFILE ON --SQL文の前にこれを付けて実行すると、ステートメントのプロファイル情報を表示する *テーブル [#kba1cb8e] -sys.dm_db_missing_index_group_stats ... 欠落インデックス グループに関する情報 -sys.dm_db_missing_index_groups ... sys.dm_db_missing_index_group_stats と sys.dm_db_missing_index_details を JOIN するために必要なテーブル -sys.dm_db_missing_index_details ... 欠落したインデックスについての詳細情報 *ツール [#d6358ffa] -SQL Server Management Studio *動的管理ビュー [#y057955f] -[[SQLServer: 知ってると便利なDMV(動的管理ビュー)まとめ:https://qiita.com/emotu/items/e92474464008c3ee2ee5]] *インデックス [#ba0b6db4] -フィルタ選択されたインデックス --例えば、テーブルのあるフィールドの内容が大部分 NULL の場合、そのフィールドの値が NULL ではないレコードだけを含むインデックスを作成することができる。 *パフォーマンス低下の防止策 [#n84ac3a1] **トランザクションログの自動拡張の増分調整 [#w07baf6e] -[[トランザクション ログ ファイルのサイズの管理:https://docs.microsoft.com/ja-jp/sql/relational-databases/logs/manage-the-size-of-the-transaction-log-file]] *問題 [#qf3554f8] **クエリパフォーマンスの低下 [#af18d1ef] -[[どうする? SQL Server のクエリ パフォーマンスが低下した!:https://blogs.msdn.microsoft.com/jpsql/2013/09/03/sql-server-5/]] *パフォーマンス改善の施策 [#rb7b58c2] **統計情報の更新 [#h1a138ce] -テーブル単位の更新 UPDATE STATISTICS テーブル名; -データベース全体 EXEC sp_updatestats; **実行プランの再生成 [#y2ff3abe] -インスタンス単位 DBCC FREEPROCCACHE; **インデックス再構築 [#h554e3a6] -インデックス指定 ALTER INDEX <インデックス名> ON <テーブル名> REBUILD; -テーブルに関連する全てのインデックス ALTER INDEX ALL ON <テーブル名> REBUILD; *参考URL [#xa3f9034] **[[都内で働くSEの技術的なひとりごと:http://ryuchan.hatenablog.com]] [#adb30add] 大変勉強になります。 -SQL Server のチューニングについてまとめてみる --[[- その1 - ( インデックスの調査 ):http://ryuchan.hatenablog.com/entry/2013/09/23/134554]] --[[- その2 - ( フィルタ選択されたインデックス ):http://ryuchan.hatenablog.com/entry/2014/04/15/084145]] --[[- その3 - ( パフォーマンスがどれくらい改善される? ):http://ryuchan.hatenablog.com/entry/2014/05/25/092853]] --[[- その4 - ( クエリパフォーマンスの結果をメールで送る ):http://ryuchan.hatenablog.com/entry/2014/07/10/234507]] --[[- その5 - ( クエリプランから不足インデックス情報を取得する ):http://ryuchan.hatenablog.com/entry/2014/09/05/101526]] --[[- その6 - ( CONVERT_IMPLICIT、暗黙の型変換の怖さを知ろう ):http://ryuchan.hatenablog.com/entry/2014/09/07/082145]] --[[- その7 - ( プランキャッシュの状態を確認する ):http://ryuchan.hatenablog.com/entry/2014/09/07/232019]] --[[- その8 - ( 未使用なインデックスを抽出してみる ):http://ryuchan.hatenablog.com/entry/2014/09/25/110125]] --[[- その9 - ( TempDB の動きも気にしてみる ):http://ryuchan.hatenablog.com/entry/2014/10/05/131131]] --[[- その10 - ( 実行プランの StatementText の中に、調査用に使用するための文字列を埋め込んでみる ):http://ryuchan.hatenablog.com/entry/2014/10/18/122816]] --[[- その11 - ( dm_exec_query_optimizer_info でチューニングの効果を確認してみる ):http://ryuchan.hatenablog.com/entry/2014/10/26/093454]] --[[- その12 - ( SQL Server のメモリ関係で必要なカウンタを抽出してみる ):http://ryuchan.hatenablog.com/entry/2015/01/02/093739]] --[[- その13 - ( その 12 の補足 ):http://ryuchan.hatenablog.com/entry/2015/01/02/163239]] --[[- その14 - ( 少しでもオーバーヘッドを少なくしてみる ):http://ryuchan.hatenablog.com/entry/2015/01/03/101204]] --[[- その15 - ( 無駄なキャッシュプランを探してみる ):http://ryuchan.hatenablog.com/entry/2015/02/15/230216]] --[[- その16 - ( BCP とか、一括系の操作を高速化してみる ):http://ryuchan.hatenablog.com/entry/2016/01/27/163127]] --[[- その16の補足 - ( TABLOCK の動作を確認してみる ):http://ryuchan.hatenablog.com/entry/2016/01/29/201424]] --[[- その17 - ( FOR XML PATH の連結をもう少し高速化してみる ):http://ryuchan.hatenablog.com/entry/2016/02/02/000244]] --[[- その18 - ( とあるプロジェクト向けメモ ):http://ryuchan.hatenablog.com/entry/2016/02/14/192644]] --[[- その19 - ( プランがちゃんと再利用されているか確認してみる ):http://ryuchan.hatenablog.com/entry/2016/05/16/000315]] --[[- その20 - ( きちんとパラメータ化してみる ):http://ryuchan.hatenablog.com/entry/2016/09/24/110106]] --[[- その21 - ( あるプロジェクト向けに書いてみた ):http://ryuchan.hatenablog.com/entry/2016/09/28/114531]] --[[- その 22 - ( これだけ分かっていればいいと思われる記事をまとめてみる ):http://ryuchan.hatenablog.com/entry/2016/10/09/174406]] --[[統計情報を更新すると、『 クエリはリコンパイルされるよね普通 』と思いつつ、なんかうまくいってない感じがすごくするので、sp_recompile を実験してみる:http://ryuchan.hatenablog.com/entry/2015/09/01/233118]] --[[インデックスの統計内容について参照してみる:http://ryuchan.hatenablog.com/entry/2015/02/15/170449]] --[[こんな時、RECOMPILE したほうがいいよねと思って記事書いてみた:http://ryuchan.hatenablog.com/entry/2015/02/04/112308]] --[[データベースファイルが格納されているドライブの残容量をチェックしてみる:http://ryuchan.hatenablog.com/entry/2014/11/12/110657]] --[[設定の内容とか、ログの使用量とかのデータベースの状態を把握してみる:http://ryuchan.hatenablog.com/entry/2014/07/11/134204]] -SQL Server の構造について記事にしてみる --[[- その1 (インデックスの基礎知識) -:http://ryuchan.hatenablog.com/entry/2014/08/11/025627]] --[[- その2 ( 前回の 『 インデックスの基礎知識 』 を実際のテーブルで実験してみる ) -:http://ryuchan.hatenablog.com/entry/2014/08/13/215049]] --[[- その3 ( インデックスの構造を深堀してみる ) -:http://ryuchan.hatenablog.com/entry/2014/08/18/000526]] --[[今更ながら..... SQL Server の構造に関して触れてみる -その1- ( たぶん、何回かにわけるので、その1にしてみた ):http://ryuchan.hatenablog.com/entry/2016/04/24/212242]] **[[SQL Serverトラブルシューティング:http://www.atmarkit.co.jp/ait/series/3394/]] [#y0fb0c37] -[[「あるタイミングから」処理が遅くなり、再起動しても再現されてしまう(パフォーマンストラブル):http://www.atmarkit.co.jp/ait/articles/1706/12/news002.html]] -[[原因不明の処理遅延が「不定期」に発生する(パフォーマンストラブル):http://www.atmarkit.co.jp/ait/articles/1706/05/news001.html]] **その他 [#e0c4111b] -[[パフォーマンスの監視とチューニング:https://docs.microsoft.com/ja-jp/sql/relational-databases/performance/monitor-and-tune-for-performance]] -[[SQL Server性能問題の3大要因 システムリソース/クエリ/待機を検証:http://www.unisys.co.jp/solution/tec/atlasbase/s33drt000005ei89-att/dbm_1007_gui.pdf]] -[[SQL Serverのパフォーマンスを 最適化するための10のヒント:http://i.dell.com/sites/doccontent/shared-content/data-sheets/ja/Documents/top_10_tips_for_optimizing-final_jp.pdf]] -[[SQL Server のクエリチューニングの参考情報:http://blog.engineer-memo.com/2014/12/10/sql-server-%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E5%8F%82%E8%80%83%E6%83%85%E5%A0%B1/]] -[[SQLチューニング: ソートを発生させないインデックス設計:https://qiita.com/emotu/items/2bd538ebe662aad457c5]] -[[Microsoft SQL Server パフォーマンスチューニング方法:http://tech.kou.asia/?p=812]] -[[Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ:https://www.slideshare.net/masayukiozawa/sql-server-sql-server-35998418]] -[[Sql server これだけはやっておこう 最終版:https://www.slideshare.net/elanlilac/sql-server-25769474]]