Recommended
PPTX
ここからはじめる SQL Server の状態取得
PDF
PDF
待ち事象から考える、Sql server の改善ポイント
PDF
SQL Server パフォーマンス問題対処 Deep Dive
PDF
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
PDF
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
PPTX
PDF
PDF
PPTX
SQL Server 2022 New Features Explain Japanese
PDF
PDF
Sql server 2016 always on 可用性グループ new features
PPTX
Databricksを初めて使う人に向けて.pptx
PDF
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
PDF
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
PDF
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PPTX
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PPTX
Sql server のバックアップとリストアの基礎
PDF
45分で理解する SQL Serverでできることできないこと
PDF
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PDF
PDF
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
Active Directory_グループポリシー基礎
PPTX
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
PPTX
PDF
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
More Related Content
PPTX
ここからはじめる SQL Server の状態取得
PDF
PDF
待ち事象から考える、Sql server の改善ポイント
PDF
SQL Server パフォーマンス問題対処 Deep Dive
PDF
SQL Server運用実践 - 3年間80台の運用経験から20の教訓
PDF
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
PPTX
PDF
What's hot
PDF
PPTX
SQL Server 2022 New Features Explain Japanese
PDF
PDF
Sql server 2016 always on 可用性グループ new features
PPTX
Databricksを初めて使う人に向けて.pptx
PDF
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
PDF
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
PDF
[B31,32]SQL Server Internal と パフォーマンスチューニング by Yukio Kumazawa
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PPTX
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PPTX
Sql server のバックアップとリストアの基礎
PDF
45分で理解する SQL Serverでできることできないこと
PDF
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
PDF
PDF
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
Active Directory_グループポリシー基礎
PPTX
[SCCM 友の会] System Center Configuration Manager この秋おさえておきたい最新機能!
Similar to Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
PPTX
PDF
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
PDF
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
PDF
Share pointを支えるsql server2014最新情報 tokyo_公開用
PDF
Sql server data store data access internals
PDF
[C14] ソーシャル ゲーム基盤を支える SQL Server by Takashi Inaba
PDF
SQL Server 2014 データベースエンジン新機能
PDF
A25 sql server data page structure deep dive
PDF
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
PDF
SQL Server 2014 In Memory OLTP Overview
PDF
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
PDF
Share pointを支えるsql server2014最新情報
PDF
COD2012 T2/T3 : 実機で試す SQL Server の現状取得
PPTX
Sql server2014復習とsqlserver2016の紹介
PDF
SQL Server/SQL Database の新機能のお話し
PDF
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
PDF
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
PDF
C13 SQL Server2012知られざるTips集 by 平山理
PDF
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
PPTX
SQL Server 2019 とともに知る Microsoft Data Platform
More from Masayuki Ozawa
PDF
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
PDF
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!
PDF
Sql database managed instance overview and internals
PDF
Power apps formula cheat sheet
PDF
K8s install (single cluster)
PDF
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
PDF
PDF
PDF
Windows エンジニア向け sql server on linux のためのスキルアップデート
PDF
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
PDF
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
PPTX
Sql server 2016 ctp 3.0 新機能
PDF
SQL Server 簡易診断サービス ご紹介資料
PDF
SQL Server 現状診断サービス ご紹介資料
PDF
Data consistency 入門 data partitioning ガイダンス
PDF
Always on 可用性グループ 構築時のポイント
PDF
Oracle と sql server 比べてみよう (sql server)
PDF
オンプレのDbaがazureのデータベースを使ってみた
PDF
Sql database 基本構成と直近で追加されていた機能の紹介
PDF
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ 1. 2. 3. 自己紹介
db tech showcase 20143
フリーランスエンジニアとして SQL Server の案件を中心
に従事しています
案件等で協力できることがありましたらお声掛けいただけると幸いです
Microsoft MVP for SQL Server (July 2011 - June 2014)
コミュニティやブログで SQL Server の情報を発信
コミュニティ活動
SQL Server : SQLTO (http://sqlto.net)
Azure : JAZUG (http://r.jazug.jp/)
ブログ : SE の雑記 (http://engineermemo.wordpress.com)
4. 本セッションについて
db tech showcase 20144
本セッションは OS / SQL Server の標準ツールを使
用して、SQL Server のチューニングに必要な情報の
取得 / 解析の一般的な流れについて解説させていた
だきます。
Sqldiag / SQL Nexus ツール / SQL Live Monitor /
PAL ツールといった情報取得 / 解析ツールは利
用しません。
5. 6. 7. 8. 9. 負荷実行のツール
db tech showcase 20149
RML Utilities for SQL Server (x64)
http://www.microsoft.com/en-us/download/details.aspx?id=4511
Ostress を使用
SQLQueryStress
http://www.datamanipulation.net/SQLQueryStress/
Enzo SQL Baseline
http://enzosqlbaseline.codeplex.com/
10. 2 つのアプローチ
db tech showcase 201410
• (機器) 構成の見直し
• パラメーター変更
全体最適 (前半)
• クエリチューニング
• インデックスチューニング
部分最適 (後半)
11. 12. 13. 14. 15. 情報を組み合わせてみる
db tech showcase 201415
ディスクの負荷が高い = ディスクがボトルネックとは限らない
ディスク
書き込み / 読み込みのどちらの頻度が多いか
→ ディスク or メモリがボトルネックの可能性
CPU
ユーザー増加によるクエリ実行回数の増加
頻繁なクエリコンパイルの発生
→ CPU or メモリがボトルネックの可能性
メモリ
どの領域のメモリが多いのか
キャッシュのヒット状況
→ メモリ or ディスクがボトルネックの可能性
本セッションでは上記 3 つのリソースについての情報を取得してみます。
16. 17. 18. OS の情報 (パフォーマンスモニター)
db tech showcase 201418
リソース カウンター
CPU Processor : % Processor Time
System : Processor Queue Length
Process : % Processor Time (sqlservr)
メモリ Memory : Available Mbytes
ディスク Physical Disk : Current Disk Queue Length
Physical Disk : Disk Bytes/sec
Physical Disk : Disk Read Bytes/sec
Physical Disk : Disk Write Bytes/sec
19. 20. SQL Server の情報
db tech showcase 201420
OS SQL Server
CPU クエリ実行時間
クエリコンパイル状況
メモリ キャッシュの確保状況
キャッシュヒット率
ディスク キャッシュヒット率
データ (インデックス)アクセス状況
21. SQL Server の情報 (パフォーマンスモニター)
db tech showcase 201421
情報 カウンター
クエリ実行時間の統計 SQLServer:Batch Resp Statistics
クエリコンパイル SQLServer:SQL Statistics
SQL Server のメモリの内訳 SQLServer:Memory Manager
キャッシュ利用状況 SQLServer:Buffer Manager
SQLServer:Plan Cache
データのアクセス状況 SQLServer:Access Methods
22. 23. 24. SQL Server のメモリ構造
24
Memory Manager : Database Cache Memory (KB)
Plan Cache : Cache Pages
Memory Manager : Connection Memory (KB)
Memory Manager : Granted Workspace Memory (KB)
Memory Manager : Lock Memory (KB)
一時利用
キャッシュ
db tech showcase 2014
25. 情報のブレークダウン
db tech showcase 201425
例)データキャッシュのブレークダウン
パフォーマンスモニターでは、
SQLServer:Memory Manager¥Database Cache Memory (KB)
SQLServer:Buffer Manager¥Database pages
でデータキャッシュとして使用しているメモリを取得できるが、
どのデータベースのキャッシュとして使用しているかまではわか
らない
パフォーマンスモニターで取得した内容の詳細化は
動的管理ビュー (DMV)
26. データベースページの比率
db tech showcase 201426
SQLServer:Memory Manager¥Database Cache Memory (KB)/
SQLServer:Buffer Manager¥Database pages はインスタンス単位の
情報のため、データベース単位でのキャッシュ状況を確認するこ
とはできない
sys.dm_os_buffer_descriptors を使用することで、
「どのデータベース」の「どのオブジェクト」が「どの程度」
メモリ上にキャッシュされているかを確認することができる
27. クエリの比率
db tech showcase 201427
SQLServer:Plan Cache¥Cache Page から情報が取得できるが、アドホッ
ククエリとパラメータ化クエリの区別がつかない
アドホッククエリ = 実行のたびにコンパイルされる可能性が高い
→ CPU 負荷とプランキャッシュのメモリ圧迫につながる
sys.dm_exec_cached_plans を使用することで、クエリの比率の詳細が確
認できる
28. 29. 30. データベースのアクセス状況
db tech showcase 201430
メモリ / ディスクのどちらからアクセスしている頻度が高いかを把握
する
以下のパフォーマンスモニターのカウンターからアクセス傾向を取得
カウンター 備考
SQLServer:Buffer Manager¥Page life expectancy キャッシュにページが保持されている秒数
SQLServer:Buffer Manager¥Page reads/sec 物理読み込み
SQLServer:Buffer Manager¥Page Readahead pages/sec 先行読み取りによる物理読み込み
SQLServer:Buffer Manager¥Page lookups/sec 論理読み込み
31. キャッシュヒット率
db tech showcase 201431
パフォーマンスモニターから取得可能
SQLServer:Buffer Manager¥Buffer cache hit ratio
SQLServer:Plan Cache¥Cache Hit Ratio
Bound Trees : ビュー / 制約
Extended Stored Procedures : 拡張ストアドプロシージャ
Object Plans : ストアドプロシージャ
SQL Plans : アドホッククエリ / パラメータ化クエリ
Temporary Tables & Table Variables : 一時テーブル / テーブル変数
キャッシュヒット率は SQL Server のサービスが最後に起動してから平
均値となるため、起動時間が長いとヒット率が平準化することがある
32. データベースファイルのアクセス状況
db tech showcase 201432
sys.fn_virtualfilestats or sys.dm_io_virtual_file_stats を
使用することでデータベースのファイル単位のアクセス
状況がわかる
特定のデータベースにアクセスが集中している
特定のファイルにアクセスが集中している
33. 34. 35. 36. 37. 38. 39. 40. 41. 部分最適のアプローチ
db tech showcase 201441
50 ms 時間がかかるクエリを 5 ms にする??
10,000 ms 時間がかかるクエリを 5ms にする??
部分最適のターゲットとしてみる
50ms のクエリが 200 回程度実行されている場合は、
50ms → 5ms の効果が出てくることもあるので実行頻度も考慮
42. 43. 44. 45. 動的管理ビュー
db tech showcase 201445
DMV : SQL Server が最後に起動してからの情報を確認
ログとして取得したい場合は定期的に状態をダンプする必要がある
クエリ関連の情報の場合、キャッシュのクリア / キャッシュアウトされるとキャッ
シュから抜けた情報は取得できない
クエリ系の DMV
sys.dm_exec_xxxx 系の DMV を使用 (以下は使用頻度が高い DMV)
sys.dm_exec_query_stats
sys.dm_exec_cached_plans
取得できる情報の例
実行頻度の高いクエリ
CPU 使用率の高いクエリ
I/O の高いクエリ
プランが生成/実行された時間/リコンパイルされた回数
46. 47. 拡張イベントを使用した Slow Query Log 取得
db tech showcase 201447
SQL Server 2008 で追加された機能
SQL Server Profiler より軽量で ETW との連携可能
SQL Server 2014 では、1,400以上 のオブジェクトを利用可能
SQL Server 2012 から SSMS から容易に作成可能
拡張イベントでスロークエリログを取得
http://wp.me/p15G3m-5uf
48. Slow Query の確認ポイント
db tech showcase 201448
注目するポイント
リソースの使用率が高いクエリ
Duration
CPU Time
IO
実行プラン
コストの高い操作
インデックスの利用状況
データ件数の多いテーブルに対してのテーブルスキャン
開発段階での取得を視野に入れる
実行速度の遅いクエリを分析するためのチェックリスト
http://technet.microsoft.com/ja-jp/library/ms177500(v=sql.105).aspx
49. 50. 51. 処理のライフサイクル
db tech showcase 201451
実行状態
(RUNNING)
実行可能状態
(RUNNABLE)
待機状態
(SUSPENDED)
処理を実行している状態
CPU
メモリ
ディスク
処理を待機している状態
ロック
並列処理同期
ディスク I/O
待機がなくなり処理の開始待ち
スケジューラーの利用可能待ち
signal wait
52. クエリによる待ちの発生状況
db tech showcase 201452
DMV から取得することが可能
インスタンスが最後に起動してからの累計値となっているため、必要に応じ
て初期化する
DBCC SQLPERF(‘<DMV 名>’, CLEAR)
情報の利用方法の例
特定の時間帯の上位の待ち事象の発生状況
待ち事象の平均待機時間
情報 DMV 備考
待ち事象 sys.dm_os_wait_stats インスタンス全体の待ち事象
ラッチ待ち sys.dm_os_latch_stats 待ち事象の LATCH_xx の詳細
スピンロック sys.dm_os_spinlock_stats スピンロックによる待ち事象
53. 54. 55. 56. 57. 58. 59. ディスクベーステーブルの I/O
db tech showcase 201459
ディスクベーステーブルの I/O はレコード単位ではなく 8KB ページ単
位で実行される
ページ内のデータ密度が高ければ、一度の I/O で読み取れるレコード
が増える
列ストアインデックスを使用することで、列単位での I/O が可能
メモリ ディスク
DB
Col1 Col2 Col3 Col4
10 100 xxxxxxxx NULL
20 200 xxxxxxxx NULL
30 300 xxxxxxxx NULL
40 400 xxxxxxxx NULL
~ 省略 ~
8000 80000 xxxxxxxx NULL
ページ
ページ
ページページ
データをキャッシュする
=
ページをキャッシュする
60. ディスク
リソースに影響を与える設定
db tech showcase 201460
アプリケーション
データファイル
ログファイル
CPU
SQL Server
メモリ
パラメータ化クエリ
ストアドプロシージャ
データ圧縮
インデックス
遅延持続性
データ圧縮
(列ストア)インデックス
In-Memory OLTP
間接チェックポイント
バッファープール拡張
61. 62. 63. 実行プランの確認
db tech showcase 201463
実行プランから以下の情報を確認
インデックスが使用されているか
クエリによりどの程度のデータが取得されているか
実行プランの確認方法の例
SSMS からグラフィカルな実行プランを取得する設定しクエリを実行
SET STATISTICS PROFILE ON を実行してからクエリを実行
コストの高い操作を把握
64. インデックスの使用状況
db tech showcase 201464
アクセスコストは一般的には Index Scan > Index Seek
Table Scan / Clustered Index Scan はテーブルのデータを全件取得
Clustered Index Scan > Index Scan > Clustered Index Seek > Index Seek
アクセスコストの高い操作は CPU への負荷も高くなる
キャッシュされているデータの取得にも CPU コストはかかる
sys.dm_db_index_usage_stats からインデックスの使用状況を取得できる
65. ディスクネックから CPU ネックへ
db tech showcase 201465
ディスクの高速化により、CPU ネックになる傾向が出てくる
処理内容の大小にかかわらず、処理をするには CPU を使用
SET NOCOUNT ON
GO
DECLARE @i bigint
WHILE(0=0)
BEGIN
SET @i += 1
END
コンパイル済みクエリでも実行されれば CPU は使用される
キャッシュされているクエリの再実行でも CPU は使用される
取得データが多ければキャッシュされていても CPU 負荷は上昇する
66. Clone DB の作成
db tech showcase 201466
データベースのバックアップ / リストアによりデータベースのコピー
ができればベスト
本番環境のデータベースを開発環境にリストア
データベースのバックアップを使用すると以下の状態が再現可能
断片化の発生状況
統計情報
データベースのコピーができない場合は、Clone DB を作成することで、
再現環境を作成する
Clone DB を作成することで、テーブルのスキーマと統計情報をコピーできる
推定実行プランを使用した実行プランの確認
How to generate a script of the necessary database metadata to create a statistics-
only database in SQL Server 2005 and in SQL Server 2008
http://support.microsoft.com/kb/914288
67. 68. まとめ
db tech showcase 201468
情報を確認して、問題個所を特定する
CPU / ディスク / メモリ / ネットワークを比較し、
相互の影響を把握
全体最適と部分最適のどちらでアプローチするか
全体構成の最適化 / クエリチューニング
クエリチューニングする際には実行時間が
大きいものから最適化することで効果が大きい
アクセスコストを意識してデータを取得
69.