SlideShare a Scribd company logo
1 of 69
Download to read offline
本セッションの資料について
db tech showcase 20141
資料のダウンロード先
http://1drv.ms/1iyYQm2
SQL Server エンジニアに
知ってもらいたい!!
SQL Server チューニングアプローチ
Masayuki Ozawa (Microsoft MVP for SQL Server)
自己紹介
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)
本セッションについて
db tech showcase 20144
 本セッションは OS / SQL Server の標準ツールを使
用して、SQL Server のチューニングに必要な情報の
取得 / 解析の一般的な流れについて解説させていた
だきます。
 Sqldiag / SQL Nexus ツール / SQL Live Monitor /
PAL ツールといった情報取得 / 解析ツールは利
用しません。
セッションの流れ
db tech showcase 20145
全体最適
休憩 (15 分)
部分最適
今回対象とする環境
db tech showcase 20146
みなさんどのようにアプローチしますか??
db tech showcase 20147
データベースを格納しているドライブに
大量のディスクキューが発生している
DEMO
db tech showcase 20148
前提となる環境の説明
負荷実行のツール
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/
2 つのアプローチ
db tech showcase 201410
• (機器) 構成の見直し
• パラメーター変更
全体最適 (前半)
• クエリチューニング
• インデックスチューニング
部分最適 (後半)
全体最適 (1)
- ボトルネックの把握 -
db tech showcase 201411
どこがネックになっているかを見極める
db tech showcase 201412
Application
Server
Storage
CPU
Memory
Storage HBA
Network Card
負荷を正しく把握する
db tech showcase 201413
Application
Server
Storage
CPU
Memory
Storage HBA
Network Card
ディスクの負荷が高いので
今回はここが原因??
Resource Balanced Approach
(Balanced System Architecture)
db tech showcase 201414
Application
Server
Storage
CPU
Memory
Storage HBA
Network Card
CPU の処理できる I/O を基準に
他のリソースのバランスをとる
情報を組み合わせてみる
db tech showcase 201415
 ディスクの負荷が高い = ディスクがボトルネックとは限らない
 ディスク
 書き込み / 読み込みのどちらの頻度が多いか
→ ディスク or メモリがボトルネックの可能性
 CPU
 ユーザー増加によるクエリ実行回数の増加
 頻繁なクエリコンパイルの発生
→ CPU or メモリがボトルネックの可能性
 メモリ
 どの領域のメモリが多いのか
 キャッシュのヒット状況
→ メモリ or ディスクがボトルネックの可能性
 本セッションでは上記 3 つのリソースについての情報を取得してみます。
全体最適 (2)
- 情報の取得 -
db tech showcase 201416
情報の取得
db tech showcase 201417
OS の情報
サーバーとしての稼働状況
SQL Server の情報
SQL Server の稼働状況
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
DEMO
db tech showcase 201419
パフォーマンスモニターに情報を追加
(OS)
SQL Server の情報
db tech showcase 201420
OS SQL Server
CPU クエリ実行時間
クエリコンパイル状況
メモリ キャッシュの確保状況
キャッシュヒット率
ディスク キャッシュヒット率
データ (インデックス)アクセス状況
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
DEMO
db tech showcase 201422
パフォーマンスモニターに情報を追加
(SQL Server)
全体最適 (3)
- 情報のブレークダウン -
db tech showcase 201423
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
情報のブレークダウン
db tech showcase 201425
 例)データキャッシュのブレークダウン
 パフォーマンスモニターでは、
 SQLServer:Memory Manager¥Database Cache Memory (KB)
 SQLServer:Buffer Manager¥Database pages
 でデータキャッシュとして使用しているメモリを取得できるが、
どのデータベースのキャッシュとして使用しているかまではわか
らない
 パフォーマンスモニターで取得した内容の詳細化は
動的管理ビュー (DMV)
データベースページの比率
db tech showcase 201426
 SQLServer:Memory Manager¥Database Cache Memory (KB)/
SQLServer:Buffer Manager¥Database pages はインスタンス単位の
情報のため、データベース単位でのキャッシュ状況を確認するこ
とはできない
 sys.dm_os_buffer_descriptors を使用することで、
「どのデータベース」の「どのオブジェクト」が「どの程度」
メモリ上にキャッシュされているかを確認することができる
クエリの比率
db tech showcase 201427
 SQLServer:Plan Cache¥Cache Page から情報が取得できるが、アドホッ
ククエリとパラメータ化クエリの区別がつかない
 アドホッククエリ = 実行のたびにコンパイルされる可能性が高い
→ CPU 負荷とプランキャッシュのメモリ圧迫につながる
 sys.dm_exec_cached_plans を使用することで、クエリの比率の詳細が確
認できる
DEMO
db tech showcase 201428
キャッシュの内訳を詳細化
全体最適 (4)
- データベースのアクセス状況 -
db tech showcase 201429
データベースのアクセス状況
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 論理読み込み
キャッシュヒット率
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 のサービスが最後に起動してから平
均値となるため、起動時間が長いとヒット率が平準化することがある
データベースファイルのアクセス状況
db tech showcase 201432
 sys.fn_virtualfilestats or sys.dm_io_virtual_file_stats を
使用することでデータベースのファイル単位のアクセス
状況がわかる
 特定のデータベースにアクセスが集中している
 特定のファイルにアクセスが集中している
DEMO
db tech showcase 201433
データベースのアクセス状況の取得
全体最適 (4)
- 情報の可視化 -
db tech showcase 201434
情報の使い分け
db tech showcase 201435
 パフォーマンスモニター
 時系列のサマリーデータを取得
 折れ線 / 積み重ねグラフ
 動的管理ビュー
 特定のタイミングの詳細なデータを取得
 表 / 円グラフ
作成するグラフの例 (1)
db tech showcase 201436
作成するグラフの例 (2)
db tech showcase 201437
DEMO
db tech showcase 201438
全体最適による改善
休憩
db tech showcase 201439
前半部分が終了しましたので
15 分程度休憩を挟みます
休憩後に後半の部分最適を
お話させていただきます
部分最適 (1)
- 最適化対象とするクエリ -
db tech showcase 201440
部分最適のアプローチ
db tech showcase 201441
 50 ms 時間がかかるクエリを 5 ms にする??
 10,000 ms 時間がかかるクエリを 5ms にする??
部分最適のターゲットとしてみる
 50ms のクエリが 200 回程度実行されている場合は、
50ms → 5ms の効果が出てくることもあるので実行頻度も考慮
クエリの実行時間の全体的な統計
db tech showcase 201442
 SQLServer:Batch Resp Statistics から、クエリの実行時間の全体的な統計
が確認できる
 SQL Server 2012 で追加されたパフォーマンスモニターのカウンター
部分最適 (2)
- クエリ情報の取得 -
db tech showcase 201443
クエリ情報の取得
db tech showcase 201444
SQL Server Profiler (SQL Trace)
データコレクション
動的管理ビュー (DMV)
拡張イベント 今回はこれらを利用
動的管理ビュー
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 の高いクエリ
 プランが生成/実行された時間/リコンパイルされた回数
DEMO
db tech showcase 201446
DMV を使用したクエリ情報の取得
拡張イベントを使用した 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
Slow Query の確認ポイント
db tech showcase 201448
 注目するポイント
 リソースの使用率が高いクエリ
 Duration
 CPU Time
 IO
 実行プラン
 コストの高い操作
 インデックスの利用状況
 データ件数の多いテーブルに対してのテーブルスキャン
 開発段階での取得を視野に入れる
 実行速度の遅いクエリを分析するためのチェックリスト
 http://technet.microsoft.com/ja-jp/library/ms177500(v=sql.105).aspx
DEMO
db tech showcase 201449
拡張イベントを使用した
Slow Query の取得
部分最適 (3)
- 待ち情報の取得 -
db tech showcase 201450
処理のライフサイクル
db tech showcase 201451
実行状態
(RUNNING)
実行可能状態
(RUNNABLE)
待機状態
(SUSPENDED)
処理を実行している状態
CPU
メモリ
ディスク
処理を待機している状態
ロック
並列処理同期
ディスク I/O
待機がなくなり処理の開始待ち
スケジューラーの利用可能待ち
signal wait
クエリによる待ちの発生状況
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 スピンロックによる待ち事象
拡張イベントの利用
db tech showcase 201453
 DMV から取得できる待ち事象は、インスタンスの累計値
 特定のクエリで発生する待ち事象は拡張イベントから取得可能
DEMO
db tech showcase 201454
待ち事象の取得
部分最適 (4)
- SQL Server を使用した処理の流れ -
db tech showcase 201455
ディスク
SQL Server を使用した処理の流れ
db tech showcase 201456
データファイル
ログファイル
CPU
SQL Server
メモリ
アプリケーション
ディスク
ディスクベーステーブルのデータ書き込み
db tech showcase 201457
アプリケーション
データファイル
ログファイル
CPU
SQL Server
メモリ
②データの変更
③チェックポイント
①先行ログ書き込み (WAL)
Or
遅延持続性 (非同期)
→ WRITELOG Wait
④ページヘッダの
書き換え
→ PAGELATCH_xxx
ディスク
ディスクベーステーブルのデータ読み込み
db tech showcase 201458
アプリケーション
データファイル
ログファイル
CPU
SQL Server
メモリ
②8KB ページ単位での
データ読み込み
→ PAGEIOLATCH Wait
①メモリのデータを
確認
ディスクベーステーブルの 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
ページ
ページ
ページページ
データをキャッシュする
=
ページをキャッシュする
ディスク
リソースに影響を与える設定
db tech showcase 201460
アプリケーション
データファイル
ログファイル
CPU
SQL Server
メモリ
パラメータ化クエリ
ストアドプロシージャ
データ圧縮
インデックス
遅延持続性
データ圧縮
(列ストア)インデックス
In-Memory OLTP
間接チェックポイント
バッファープール拡張
DEMO
db tech showcase 201461
データストア設定の変更によるI/Oの変化
部分最適 (5)
- 実行プランの把握 -
db tech showcase 201462
実行プランの確認
db tech showcase 201463
 実行プランから以下の情報を確認
 インデックスが使用されているか
 クエリによりどの程度のデータが取得されているか
 実行プランの確認方法の例
 SSMS からグラフィカルな実行プランを取得する設定しクエリを実行
 SET STATISTICS PROFILE ON を実行してからクエリを実行
コストの高い操作を把握
インデックスの使用状況
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 からインデックスの使用状況を取得できる
ディスクネックから 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 負荷は上昇する
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
DEMO
db tech showcase 201467
インデックスの設定によるクエリ最適化
CloneDB の作成
まとめ
db tech showcase 201468
 情報を確認して、問題個所を特定する
 CPU / ディスク / メモリ / ネットワークを比較し、
相互の影響を把握
 全体最適と部分最適のどちらでアプローチするか
 全体構成の最適化 / クエリチューニング
 クエリチューニングする際には実行時間が
大きいものから最適化することで効果が大きい
 アクセスコストを意識してデータを取得
QA
db tech showcase 201469

More Related Content

What's hot

SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターMasayuki Ozawa
 
SQL serverのデータ破損に備える
SQL serverのデータ破損に備えるSQL serverのデータ破損に備える
SQL serverのデータ破損に備えるokumar savurou
 
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史Insight Technology, Inc.
 
Sql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new featuresSql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new featuresMasayuki Ozawa
 
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawaInsight Technology, Inc.
 
SQL Server チューニング基礎
SQL Server チューニング基礎SQL Server チューニング基礎
SQL Server チューニング基礎Microsoft
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Masayuki Ozawa
 
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版elanlilac
 
Sql server浅く広く
Sql server浅く広くSql server浅く広く
Sql server浅く広くokumar savurou
 
Always on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントAlways on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントMasayuki Ozawa
 
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之Insight Technology, Inc.
 
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...Insight Technology, Inc.
 
45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと45分で理解する SQL Serverでできることできないこと
45分で理解する SQL ServerでできることできないことInsight Technology, Inc.
 
SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集Sho Okada
 
Sql server パーティション 概要
Sql server パーティション 概要Sql server パーティション 概要
Sql server パーティション 概要Masayuki Ozawa
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化についてSoudai Sone
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...オラクルエンジニア通信
 
SQL Server のインデックス設計
SQL Server のインデックス設計SQL Server のインデックス設計
SQL Server のインデックス設計Koji Yamada
 

What's hot (20)

SQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンターSQL Server パフォーマンスカウンター
SQL Server パフォーマンスカウンター
 
SQL serverのデータ破損に備える
SQL serverのデータ破損に備えるSQL serverのデータ破損に備える
SQL serverのデータ破損に備える
 
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
 
Sql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new featuresSql server 2016 always on 可用性グループ new features
Sql server 2016 always on 可用性グループ new features
 
Sql server 運用 101
Sql server 運用 101Sql server 運用 101
Sql server 運用 101
 
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
[D11] SQL Server エンジニアに知ってもらいたい!! SQL Server チューニングアプローチ by masayuki ozawa
 
SQL Server チューニング基礎
SQL Server チューニング基礎SQL Server チューニング基礎
SQL Server チューニング基礎
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
 
Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版Sql server これだけはやっておこう 最終版
Sql server これだけはやっておこう 最終版
 
Sql server浅く広く
Sql server浅く広くSql server浅く広く
Sql server浅く広く
 
Always on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイントAlways on 可用性グループ 構築時のポイント
Always on 可用性グループ 構築時のポイント
 
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之C34 Always On 可用性グループ 構築時のポイント by 小澤真之
C34 Always On 可用性グループ 構築時のポイント by 小澤真之
 
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...
[db tech showcase Tokyo 2016] B27:SQL Server 2016 AlwaysOn 可用性グループ New Featur...
 
45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと
 
SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集
 
Sql server パーティション 概要
Sql server パーティション 概要Sql server パーティション 概要
Sql server パーティション 概要
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
 
SQL Server のインデックス設計
SQL Server のインデックス設計SQL Server のインデックス設計
SQL Server のインデックス設計
 

Similar to Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ

Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?Masayuki Ozawa
 
Migrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerMigrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerOshitari_kochi
 
Share pointを支えるsql server2014最新情報
Share pointを支えるsql server2014最新情報Share pointを支えるsql server2014最新情報
Share pointを支えるsql server2014最新情報Atsuo Yamasaki
 
SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能Masayuki Ozawa
 
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]日本マイクロソフト株式会社
 
SQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data PlatformSQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data PlatformDaiyu Hatakeyama
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Yukio Kumazawa
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...Insight Technology, Inc.
 
SQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewSQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewMasayuki Ozawa
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Keisuke Fujikawa
 
DBA から開発者への情報提供
DBA から開発者への情報提供DBA から開発者への情報提供
DBA から開発者への情報提供Masayuki Ozawa
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...Insight Technology, Inc.
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能Masayuki Ozawa
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 Takakiyo Tanaka
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009Ryota Watabe
 

Similar to Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ (20)

Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
 
Migrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerMigrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent Profiler
 
Share pointを支えるsql server2014最新情報
Share pointを支えるsql server2014最新情報Share pointを支えるsql server2014最新情報
Share pointを支えるsql server2014最新情報
 
SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能SQL Server 2014 データベースエンジン新機能
SQL Server 2014 データベースエンジン新機能
 
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
 
SQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data PlatformSQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data Platform
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
 
SQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewSQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP Overview
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門Data Factory V2 新機能徹底活用入門
Data Factory V2 新機能徹底活用入門
 
DBA から開発者への情報提供
DBA から開発者への情報提供DBA から開発者への情報提供
DBA から開発者への情報提供
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
 
Fluentd casual
Fluentd casualFluentd casual
Fluentd casual
 

More from Masayuki Ozawa

db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解するdb tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解するMasayuki Ozawa
 
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!Masayuki Ozawa
 
Sql database managed instance overview and internals
Sql database managed instance overview and internalsSql database managed instance overview and internals
Sql database managed instance overview and internalsMasayuki Ozawa
 
Power apps formula cheat sheet
Power apps formula cheat sheetPower apps formula cheat sheet
Power apps formula cheat sheetMasayuki Ozawa
 
K8s install (single cluster)
K8s install (single cluster)K8s install (single cluster)
K8s install (single cluster)Masayuki Ozawa
 
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tipsde:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux TipsMasayuki Ozawa
 
Managed Instance チートシート
Managed Instance チートシートManaged Instance チートシート
Managed Instance チートシートMasayuki Ozawa
 
Pacemaker 操作方法メモ
Pacemaker 操作方法メモPacemaker 操作方法メモ
Pacemaker 操作方法メモMasayuki Ozawa
 
Windows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデートWindows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデートMasayuki Ozawa
 
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Masayuki Ozawa
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Masayuki Ozawa
 
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料Masayuki Ozawa
 
SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料Masayuki Ozawa
 
A25 sql server data page structure deep dive
A25 sql server data page structure deep diveA25 sql server data page structure deep dive
A25 sql server data page structure deep diveMasayuki Ozawa
 
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスData consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスMasayuki Ozawa
 
Sql server data store data access internals
Sql server data store data access internalsSql server data store data access internals
Sql server data store data access internalsMasayuki Ozawa
 
Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Masayuki Ozawa
 
オンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたオンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたMasayuki Ozawa
 
Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介Masayuki Ozawa
 
和牛をおいしく食べるには
和牛をおいしく食べるには和牛をおいしく食べるには
和牛をおいしく食べるにはMasayuki Ozawa
 

More from Masayuki Ozawa (20)

db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解するdb tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
 
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!
db tech showcase 2019 SQL Server 2019 最新情報 - SQL Serverの進化をまとめてお届け!
 
Sql database managed instance overview and internals
Sql database managed instance overview and internalsSql database managed instance overview and internals
Sql database managed instance overview and internals
 
Power apps formula cheat sheet
Power apps formula cheat sheetPower apps formula cheat sheet
Power apps formula cheat sheet
 
K8s install (single cluster)
K8s install (single cluster)K8s install (single cluster)
K8s install (single cluster)
 
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tipsde:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
de:code 2018 DA06 SQL Server 管理者におくる SQL Server on Linux Tips
 
Managed Instance チートシート
Managed Instance チートシートManaged Instance チートシート
Managed Instance チートシート
 
Pacemaker 操作方法メモ
Pacemaker 操作方法メモPacemaker 操作方法メモ
Pacemaker 操作方法メモ
 
Windows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデートWindows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデート
 
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 
SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料SQL Server 簡易診断サービス ご紹介資料
SQL Server 簡易診断サービス ご紹介資料
 
SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料SQL Server 現状診断サービス ご紹介資料
SQL Server 現状診断サービス ご紹介資料
 
A25 sql server data page structure deep dive
A25 sql server data page structure deep diveA25 sql server data page structure deep dive
A25 sql server data page structure deep dive
 
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスData consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンス
 
Sql server data store data access internals
Sql server data store data access internalsSql server data store data access internals
Sql server data store data access internals
 
Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)Oracle と sql server 比べてみよう (sql server)
Oracle と sql server 比べてみよう (sql server)
 
オンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたオンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみた
 
Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介Sql database 基本構成と直近で追加されていた機能の紹介
Sql database 基本構成と直近で追加されていた機能の紹介
 
和牛をおいしく食べるには
和牛をおいしく食べるには和牛をおいしく食べるには
和牛をおいしく食べるには
 

Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ

  • 1. 本セッションの資料について db tech showcase 20141 資料のダウンロード先 http://1drv.ms/1iyYQm2
  • 2. SQL Server エンジニアに 知ってもらいたい!! SQL Server チューニングアプローチ Masayuki Ozawa (Microsoft MVP for SQL Server)
  • 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. セッションの流れ db tech showcase 20145 全体最適 休憩 (15 分) 部分最適
  • 7. みなさんどのようにアプローチしますか?? db tech showcase 20147 データベースを格納しているドライブに 大量のディスクキューが発生している
  • 8. DEMO db tech showcase 20148 前提となる環境の説明
  • 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 • (機器) 構成の見直し • パラメーター変更 全体最適 (前半) • クエリチューニング • インデックスチューニング 部分最適 (後半)
  • 12. どこがネックになっているかを見極める db tech showcase 201412 Application Server Storage CPU Memory Storage HBA Network Card
  • 13. 負荷を正しく把握する db tech showcase 201413 Application Server Storage CPU Memory Storage HBA Network Card ディスクの負荷が高いので 今回はここが原因??
  • 14. Resource Balanced Approach (Balanced System Architecture) db tech showcase 201414 Application Server Storage CPU Memory Storage HBA Network Card CPU の処理できる I/O を基準に 他のリソースのバランスをとる
  • 15. 情報を組み合わせてみる db tech showcase 201415  ディスクの負荷が高い = ディスクがボトルネックとは限らない  ディスク  書き込み / 読み込みのどちらの頻度が多いか → ディスク or メモリがボトルネックの可能性  CPU  ユーザー増加によるクエリ実行回数の増加  頻繁なクエリコンパイルの発生 → CPU or メモリがボトルネックの可能性  メモリ  どの領域のメモリが多いのか  キャッシュのヒット状況 → メモリ or ディスクがボトルネックの可能性  本セッションでは上記 3 つのリソースについての情報を取得してみます。
  • 16. 全体最適 (2) - 情報の取得 - db tech showcase 201416
  • 17. 情報の取得 db tech showcase 201417 OS の情報 サーバーとしての稼働状況 SQL Server の情報 SQL Server の稼働状況
  • 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. DEMO db tech showcase 201419 パフォーマンスモニターに情報を追加 (OS)
  • 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. DEMO db tech showcase 201422 パフォーマンスモニターに情報を追加 (SQL Server)
  • 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. DEMO db tech showcase 201428 キャッシュの内訳を詳細化
  • 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. DEMO db tech showcase 201433 データベースのアクセス状況の取得
  • 34. 全体最適 (4) - 情報の可視化 - db tech showcase 201434
  • 35. 情報の使い分け db tech showcase 201435  パフォーマンスモニター  時系列のサマリーデータを取得  折れ線 / 積み重ねグラフ  動的管理ビュー  特定のタイミングの詳細なデータを取得  表 / 円グラフ
  • 38. DEMO db tech showcase 201438 全体最適による改善
  • 39. 休憩 db tech showcase 201439 前半部分が終了しましたので 15 分程度休憩を挟みます 休憩後に後半の部分最適を お話させていただきます
  • 41. 部分最適のアプローチ db tech showcase 201441  50 ms 時間がかかるクエリを 5 ms にする??  10,000 ms 時間がかかるクエリを 5ms にする?? 部分最適のターゲットとしてみる  50ms のクエリが 200 回程度実行されている場合は、 50ms → 5ms の効果が出てくることもあるので実行頻度も考慮
  • 42. クエリの実行時間の全体的な統計 db tech showcase 201442  SQLServer:Batch Resp Statistics から、クエリの実行時間の全体的な統計 が確認できる  SQL Server 2012 で追加されたパフォーマンスモニターのカウンター
  • 43. 部分最適 (2) - クエリ情報の取得 - db tech showcase 201443
  • 44. クエリ情報の取得 db tech showcase 201444 SQL Server Profiler (SQL Trace) データコレクション 動的管理ビュー (DMV) 拡張イベント 今回はこれらを利用
  • 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. DEMO db tech showcase 201446 DMV を使用したクエリ情報の取得
  • 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. DEMO db tech showcase 201449 拡張イベントを使用した Slow Query の取得
  • 50. 部分最適 (3) - 待ち情報の取得 - db tech showcase 201450
  • 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. 拡張イベントの利用 db tech showcase 201453  DMV から取得できる待ち事象は、インスタンスの累計値  特定のクエリで発生する待ち事象は拡張イベントから取得可能
  • 54. DEMO db tech showcase 201454 待ち事象の取得
  • 55. 部分最適 (4) - SQL Server を使用した処理の流れ - db tech showcase 201455
  • 56. ディスク SQL Server を使用した処理の流れ db tech showcase 201456 データファイル ログファイル CPU SQL Server メモリ アプリケーション
  • 57. ディスク ディスクベーステーブルのデータ書き込み db tech showcase 201457 アプリケーション データファイル ログファイル CPU SQL Server メモリ ②データの変更 ③チェックポイント ①先行ログ書き込み (WAL) Or 遅延持続性 (非同期) → WRITELOG Wait ④ページヘッダの 書き換え → PAGELATCH_xxx
  • 58. ディスク ディスクベーステーブルのデータ読み込み db tech showcase 201458 アプリケーション データファイル ログファイル CPU SQL Server メモリ ②8KB ページ単位での データ読み込み → PAGEIOLATCH Wait ①メモリのデータを 確認
  • 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. DEMO db tech showcase 201461 データストア設定の変更によるI/Oの変化
  • 62. 部分最適 (5) - 実行プランの把握 - db tech showcase 201462
  • 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. DEMO db tech showcase 201467 インデックスの設定によるクエリ最適化 CloneDB の作成
  • 68. まとめ db tech showcase 201468  情報を確認して、問題個所を特定する  CPU / ディスク / メモリ / ネットワークを比較し、 相互の影響を把握  全体最適と部分最適のどちらでアプローチするか  全体構成の最適化 / クエリチューニング  クエリチューニングする際には実行時間が 大きいものから最適化することで効果が大きい  アクセスコストを意識してデータを取得