[db tech showcase tokyo 2016] a32: oracle脳で考えるsql server運用 by...

56
Oracle脳で考える SQL Server運用 コンサルティング事業部 内山 義夫

Upload: insight-technology-inc

Post on 16-Apr-2017

998 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

Oracle脳で考えるSQL Server運用

コンサルティング事業部内山 義夫

Page 2: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

2

Contents

• 1. Oracle脳とは?

• 2. Oracle脳によるSQL Server運用例

• 3. まとめ

Page 3: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

3

Oracle脳とは?Oracle脳とは?

Page 4: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

4

Oracle脳とは?

• Oracle脳(造語)

「データベース=Oracle」なDBA

基盤の共通化でOracleがスタンダードに

小さいシステムでSQL ServerやMySQLを少々使用

Page 5: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

5

Oracle脳の現場

インデックス追加しておいてー。インデックス追加しておいてー。

実行計画を固定化したいんだけどー。実行計画を固定化したいんだけどー。

1時間前のデータに戻してー。1時間前のデータに戻してー。

バッチが遅延したので、調査してー。バッチが遅延したので、調査してー。

領域が不足しそう。なんとかしてー。領域が不足しそう。なんとかしてー。

障害が発生したので、調査してー。障害が発生したので、調査してー。

通常運用中

障害対応中

Page 6: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

6

リクエストに対する対処

• Oracle脳レベル

– Oracleを運用している環境やスキルにより異なる

・EEオプションは当たり前・最新のOracleの機能を率先して使うアーリーアダプター

・EEオプションは当たり前・最新のOracleの機能を率先して使うアーリーアダプター

Ver 3.0

・EEやEEのオプションを使用した環境がメイン・Oracleの機能を色々使用して運用している

・EEやEEのオプションを使用した環境がメイン・Oracleの機能を色々使用して運用している

Ver 2.0

・SEやSE Oneの環境を主に運用している・EEの環境もあるが、オプション等は使用していない

・SEやSE Oneの環境を主に運用している・EEの環境もあるが、オプション等は使用していない

Ver 1.0

Page 7: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

7

例えば・・・

自動データ最適化の使用自動データ最適化の使用

Ver 3.0

セグメントアドバイザの推奨対応セグメントアドバイザの推奨対応

Ver 2.0

不要データの削除不要データの削除

Ver 1.0

空き領域が不足しそう。緊急で空きを作ってー。空き領域が不足しそう。緊急で空きを作ってー。

Page 8: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

8

そんなある日

• そっと聞こえる神の声

– 次のシステムリプレイス時に別のDBに移行するかも。

– SQL Serverって基幹システムで使えるの?

– まずは、小さいシステムから移行を検討してみるか。

Page 9: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

9

SQL Serverへの移行?

• 移行にまつわる背景

– SE、SE One廃止/SE RACの制限強化• 1ノード1ソケットに制限

– EEに上げるか、ソケット数を落とすか。。。

• 12.1.0.1は2016年8月でExtended Support無しで終了

– Oracleのサポートライセンス• 毎年2%ずつ上昇(更新時調整率) 。

• ボディーブローのように効いてくる。

– 2020年12月に11gR2のExtended Support終了• まだ先の話だが、アプリの改修も考えるとそろそろ動き出す時期?

Page 10: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

10

SQL Serverへの移行?

• 移行にまつわる背景 その2

– ハードスペック向上• SSDや大容量メモリなどDBの性能に大きく影響

• CPU数の増加はライセンスに影響も。。。

– MicrosoftのVS Oracle施策• Oracleからの移行でライセンス無料

• Linux版SQL Serverのリリース

– その他要因• ビッグデータによるデータ量の増加

• クラウドへの移行の加速

Page 11: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

11

Oracle脳によるSQL Server運用例Oracle脳によるSQL Server運用例

Page 12: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

12

SQL Serverで既存の運用はどう変わる?

• 実際の現場でよくあるOracle運用

– ケース1:空き領域が不足しそう。緊急で空きを作ってー。

– ケース2:実行計画を固定化したいんだけどー。

– ケース3:パフォーマンス遅延が発生。原因調査してー。

OracleとSQL Server でどこがどう違うのか?OracleとSQL Server でどこがどう違うのか?

Page 13: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

13

SQL Serverで既存の運用はどう変わる?

• 実際の現場でよくあるOracle運用

– ケース1:空き領域が不足しそう。緊急で空きを作ってー。

– ケース2:実行計画を固定化したいんだけどー。

– ケース3:パフォーマンス遅延が発生。原因調査してー。

Page 14: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

14

ケース1

自動データ最適化の使用自動データ最適化の使用

Ver 3.0

セグメントアドバイザの推奨対応セグメントアドバイザの推奨対応

Ver 2.0

不要データの削除不要データの削除

Ver 1.0

空き領域が不足しそう。緊急で空きを作ってー。空き領域が不足しそう。緊急で空きを作ってー。

Page 15: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

15

空き領域不足→不要なデータの削除

• 不要なテーブル/データの削除

– よくあるゴミテーブルの削除• Ex)

– EMP_BK

– EMP_20160715

– よくあるごみデータの削除• deleted_flg=1のデータ

– よくある過去データ削除• 保持期限が過ぎたデータ

• 過去パーティションや履歴テーブル等のデータ

– テーブルやインデックスの再構築• 圧縮済みデータの再圧縮等

Page 16: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

16

空き領域不足→不要なデータの削除

• 不要なインデックスの削除

– アプリケーションで使用されていないインデックスを削除• 未使用インデックスを抽出

– インデックスの監視設定を使用

» Alter index [インデックス名] monitoring usage;

declare cursor cur is

select owner, index_name

from dba_indexes

where owner In('XXX')

and index_type In( 'NORMAL','FUNCTION-BASED NORMAL' )

and index_name Not like ‘BIN$%’;ls_sql varchar2(100);

begin

for rec in cur loop

ls_sql := 'alter index '||rec.owner||'.'||rec.index_name||' monitoring usage';

execute immediate ( ls_sql );

end loop;

exception

when others then

dbms_output.put_line(ls_sql);

dbms_output.put_line(sqlerrm);

end;

/

Ex)XXXユーザーが所有するすべてのインデックスに監視設定を適用する場合

Page 17: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

17

空き領域不足→セグメントアドバイザ

• セグメントアドバイザの使用

– セグメントアドバイザとは?• 再生可能な領域があるセグメントを特定

• 定期的に自動実行(必要時に実行することも可)

• 圧縮、縮小、再構築などのアドバイスを実施。サイズの縮小を検討。

Page 18: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

18

空き領域不足→自動データ最適化

• 自動データ最適化(ADO)

– 自動データ最適化(Automatic Data Optimization)とは?• アクセスがないデータをOracleが自動で圧縮

• ポリシーを作成し、そのポリシーに沿って自動圧縮

テーブルA(圧縮前) テーブルA(圧縮後)

空きブロックが増加圧縮前:12ブロック圧縮後:18ブロック

Ex)1年以上更新がなかった行(ブロック)を圧縮

1週間以下1週間~1年1年以上

Page 19: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

19

ケース1(SQL Serverの場合)

自動データ最適化の使用自動データ最適化の使用

Ver 3.0

セグメントアドバイザの推奨対応セグメントアドバイザの推奨対応

Ver 2.0

不要データの削除不要データの削除

Ver 1.0

不要データの削除 標準レポートの使用アドバイザの使用

空き領域が不足しそう。緊急で空きを作ってー。空き領域が不足しそう。緊急で空きを作ってー。

N/A

Page 20: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

20

空き領域不足→不要なデータの削除

• 不要なデータの削除

– 不要なテーブルの削除はOracleと同じ

– 未使用インデックスの抽出• 「インデックスの使用状況の統計」レポートで確認可能

• インスタンス起動以降の統計

参照無し

Page 21: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

21

空き領域不足→アドバイザ

• アドバイザ(断片化)

– インデックスの物理統計レポートで確認可能• 「推奨されている操作」にアドバイスが記載

推奨する操作のアドバイス

Page 22: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

22

空き領域不足→アドバイザ

• アドバイザ(圧縮)

– 圧縮による効果を確認

• sp_estimate_data_compression_savingsの使用

– インデックス毎に圧縮率を測定

– インスタンス起動以降の統計

USE TPCCGOEXEC sp_estimate_data_compression_savings 'dbo', 'CUSTOMER', NULL, NULL, ‘PAGE' ;GO

Ex)TPCCデータベースのCUSTOMER表をページ圧縮で分析

Page 23: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

23

空き領域不足→×自動データ最適化

• 自動データ最適化

→SQL Serverに同等の機能はない。。。

– 他にSQL Serverでできる空き領域確保• 列ストアインデックスの使用

– その他のインデックスが削除できる場合がある

Page 24: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

24

ケース1 まとめ

自動データ最適化の使用自動データ最適化の使用

Ver 3.0

セグメントアドバイザの推奨対応セグメントアドバイザの推奨対応

Ver 2.0

不要データの削除不要データの削除

Ver 1.0

不要データの削除 標準レポートの使用アドバイザの使用

空き領域が不足しそう。緊急で空きを作ってー。空き領域が不足しそう。緊急で空きを作ってー。

N/A

Page 25: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

25

SQL Serverで既存の運用はどう変わる?

• 実際の現場でよくあるOracle運用

– ケース1:空き領域が不足しそう。緊急で空きを作ってー。

– ケース2:実行計画を固定化したいんだけどー。

– ケース3:パフォーマンス遅延が発生。原因調査してー。

Page 26: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

26

ケース2

SQLプロファイルの適用SQLプロファイルの適用

Ver 3.0

SPMで固定化SPMで固定化

Ver 2.0

ヒント句追加ヒント句追加

Ver 1.0

実行計画を固定化したいんだけどー実行計画を固定化したいんだけどー

Page 27: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

27

プラン固定化→ヒント句追加

• SQLにヒント句を追加

– アプリケーションの改修を伴う

SELECT

e.empno,

e.ename,

d.deptno,

d.dname

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno;

SELECT /*+ use_hash(e,d) */

e.empno,

e.ename,

d.deptno,

d.dname

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno;

----------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |----------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 14 | 364 | 6 (17)| 00:00:01 || 1 | MERGE JOIN | | 14 | 364 | 6 (17)| 00:00:01 || 2 | TABLE ACCESS BY INDEX ROWID| DEPT | 4 | 52 | 2 (0)| 00:00:01 || 3 | INDEX FULL SCAN | PK_DEPT | 4 | | 1 (0)| 00:00:01 ||* 4 | SORT JOIN | | 14 | 182 | 4 (25)| 00:00:01 || 5 | TABLE ACCESS FULL | EMP | 14 | 182 | 3 (0)| 00:00:01 |----------------------------------------------------------------------------------------

---------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |---------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 14 | 364 | 6 (0)| 00:00:01 ||* 1 | HASH JOIN | | 14 | 364 | 6 (0)| 00:00:01 || 2 | TABLE ACCESS FULL| DEPT | 4 | 52 | 3 (0)| 00:00:01 || 3 | TABLE ACCESS FULL| EMP | 14 | 182 | 3 (0)| 00:00:01 |---------------------------------------------------------------------------

ヒント句使用前 ヒント句使用後

Page 28: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

28

プラン固定化→ヒント句追加

• Tips:別クエリの実行計画からヒント句作成

SELECT/*+

BEGIN_OUTLINE_DATAUSE_NL(@"SEL$1" "E"@"SEL$1")LEADING(@"SEL$1" "D"@"SEL$1" "E"@"SEL$1")FULL(@"SEL$1" "E"@"SEL$1")FULL(@"SEL$1" "D"@"SEL$1")OUTLINE_LEAF(@"SEL$1")ALL_ROWSDB_VERSION('11.2.0.4')OPTIMIZER_FEATURES_ENABLE('11.2.0.4')IGNORE_OPTIM_EMBEDDED_HINTSEND_OUTLINE_DATA

*/e.empno,e.ename,d.deptno,d.dname

FROMemp e,dept d

WHEREe.deptno = d.deptno;

EXPLAIN PLAN FOR SELECT /*+ use_nl(e,d) */

e.empno,e.ename,d.deptno,d.dname

FROMemp e,dept d

WHEREe.deptno = d.deptno;

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(format => 'ADVANCED'));

Outline Data-------------

/*+BEGIN_OUTLINE_DATAUSE_NL(@"SEL$1" "E"@"SEL$1")LEADING(@"SEL$1" "D"@"SEL$1" "E"@"SEL$1")FULL(@"SEL$1" "E"@"SEL$1")FULL(@"SEL$1" "D"@"SEL$1")OUTLINE_LEAF(@"SEL$1")ALL_ROWSDB_VERSION('11.2.0.4')OPTIMIZER_FEATURES_ENABLE('11.2.0.4')IGNORE_OPTIM_EMBEDDED_HINTSEND_OUTLINE_DATA

*/

---------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |---------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 82 | 4510 | 26 (0)| 00:00:01 || 1 | NESTED LOOPS | | 82 | 4510 | 26 (0)| 00:00:01 || 2 | TABLE ACCESS FULL| DEPT | 82 | 1804 | 2 (0)| 00:00:01 ||* 3 | TABLE ACCESS FULL| EMP | 1 | 33 | 0 (0)| 00:00:01 |---------------------------------------------------------------------------

固定化したいクエリをExplain Plan Forで実行

ヒント句が画面に出力

ヒント句をクエリに指定

Page 29: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

29

プラン固定化→SPM

• SPMによる固定化

– SPM(SQL Plan Management)とは?

• SQLの実行計画を記録し、実行計画を管理。固定化も可能

• 過去に実行された実行計画を固定化することも可能

SPMで管理されているSQL

固定化された実行計画

Page 30: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

30

• 過去に実行された実行計画の固定化

プラン固定化→SPM

過去に実行されたSQLを検索

作成したSQLチューニングセットを指定

SQLチューニングセットを作成

SPMで該当のSQLチューニングセットを指定

Page 31: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

31

プラン固定化→SQLプロファイル

• SQLプロファイルによる固定化

– SQLプロファイルとは?

• チューニングアドバイザで作成された実行計画

• 適用することで、実行計画が固定化

チューニングアドバイザの結果SQLプロファイル適用後の効果(8.87%)

SQLプロファイル作成

Page 32: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

32

プラン固定化→SQLプロファイル

• Tips:ある期間の全クエリに対するアドバイス

過去24時間のAWR

スナップショット

ある期間のSQLをSQLチューニングセットとして作成

SQLチューニングセットに対するアドバイザ実行

該当期間の全てのSQLに対する効果

改善前:2,888秒改善後:2,409秒

Page 33: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

33

ケース2(SQL Serverの場合)

Ver 3.0Ver 2.0Ver 1.0

ヒント句追加 クエリストアで強制 N/A(推奨値の表示のみ)

SQLプロファイルの適用SQLプロファイルの適用SPMで固定化SPMで固定化ヒント句追加ヒント句追加

実行計画を固定化したいんだけどー実行計画を固定化したいんだけどー

Page 34: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

34

プラン固定化→ヒント句追加

• ヒント句の追加SELECT

e.empno,

e.ename,

d.deptno,

d.dname

FROM

emp e,

dept d

WHERE

e.deptno = d.deptno;

SELECT

e.empno,

e.ename,

d.deptno,

d.dname

FROM

emp e inner hash join

dept d

ON

e.deptno = d.deptno;

Page 35: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

35

プラン固定化→ヒント句追加

• 別クエリの実行プランを適用

SQLに、Option(USE PLAN

N’XML’)を追加することで、左記の実行プランで実行される

SQLの実行プランをXMLに保存

実行プラン(XML)

実行プランの固定化

Page 36: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

36

• クエリストアからプランを強制

– クエリストアとは?• クエリのパフォーマンス情報を収集、分析し、クエリのパフォーマンスを管理

• 実行プランの強制が可能

遅いときの実行プラン

右上で選択したプランを強制

速いときの実行プラン

プラン固定化→クエリストアで固定化

クエリストア(リソースを消費するクエリの上位)

Page 37: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

37

プラン固定化→アドバイザ機能(のみ)

• アドバイザ機能

– データベースエンジンチューニングアドバイザー

SQLで右クリックし、データベースエンジンチューニングアドバイザーを起動

推奨インデックスの定義が表示される

予想向上率

Page 38: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

38

• アドバイザ機能

– 不足しているインデックス

プラン固定化→アドバイザ機能(のみ)

インデックスを作成すると性能が向上する可能性がある

Page 39: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

39

プラン固定化→アドバイザ機能(のみ)

• 不足しているインデックス一覧の出力– dm_db_missing_index_detailsで参照可能

不足しているインデックスに指定する列名

Page 40: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

40

ケース2 まとめ

Ver 3.0Ver 2.0Ver 1.0

ヒント句追加 クエリストアで強制 N/A(推奨値の表示のみ)

SQLプロファイルの適用SQLプロファイルの適用SPMで固定化SPMで固定化ヒント句追加ヒント句追加

実行計画を固定化したいんだけどー実行計画を固定化したいんだけどー

Page 41: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

41

SQL Serverで既存の運用はどう変わる?

• 実際の現場でよくあるOracle運用

– ケース1:空き領域が不足しそう。緊急で空きを作ってー。

– ケース2:実行計画を固定化したいんだけどー。

– ケース3:パフォーマンス遅延発生。原因調査してー。

Page 42: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

42

ケース3

SQLモニタリングで調査SQLモニタリングで調査

Ver 3.0

EMで調査EMで調査

Ver 2.0

Statspackで調査Statspackで調査

Ver 1.0

パフォーマンス遅延発生。原因調査してー。パフォーマンス遅延発生。原因調査してー。

Page 43: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

43

パフォーマンス遅延→Statspackで調査

• Statspackを使用した調査

– パフォーマンス問題発生時のStatspackレポートを取得

– 正常時と比較して調査• どのクエリが遅延しているか?

• 問題発生時にしかないクエリはないか?

• 何の待機が増加しているか?

• 全クエリが遅延してないか?

Page 44: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

44

• Enterprise Managerのパフォーマンス情報を調査

– トップアクティビティ→SQLの詳細で調査

該当時間帯にどのクエリが遅いか?

該当クエリの待機を確認。ロック待ち?I/O?CPU?

パフォーマンス遅延→EMで調査

Page 45: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

45

• ASHレポートやAWRSQLレポートを使用した調査

パフォーマンス遅延→EMで調査

Page 46: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

46

• SQLモニタリング

– リアルタイムでクエリの負荷状況を確認可能

– クエリ実行中の場合、進行状況も表示

クエリの進行状況

完了時間も表示

パフォーマンス遅延→SQLモニタリングで調査

Page 47: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

47

ケース3(SQL Serverの場合)

SQLモニタリングで調査SQLモニタリングで調査

Ver 3.0

EMで調査EMで調査

Ver 2.0

Statspackで調査Statspackで調査

Ver 1.0

パフォーマンスデータコレクションで調査

クエリストアで調査

パフォーマンス遅延発生。原因調査してー。パフォーマンス遅延発生。原因調査してー。

N/A(利用状況モニター)

Page 48: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

48

パフォーマンス遅延→パフォーマンスデータコレクションで調査

• パフォーマンスデータコレクションによる調査

– パフォーマンスデータコレクションとは?

• データベースの稼働統計

• SQL Serverの待機やOSリソースの情報収集

• 過去データも遡って確認可能

Page 49: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

49

• クエリ統計でクエリの詳細を調査

該当時間帯にどのクエリが遅いか?

SQLの待機詳細

パフォーマンス遅延→パフォーマンスデータコレクションで調査

クエリ統計

Page 50: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

50

• クエリストアによる調査

– クエリストアとは?

• 実行されたクエリの情報を収集、分析可能

• クエリの遅延原因の分析

リソースを消費するクエリの上位

全体のリソース消費量

追跡したクエリ

低下したクエリ

パフォーマンス遅延→クエリストアで調査

Page 51: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

51

• 過去1時間の間に低下した上位25のクエリ

遅延が発生したクエリ 遅いときの実行

プラン

パフォーマンス遅延→クエリストアで調査

速いときの実行プラン

Page 52: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

52

• SQLモニター

– リアルタイムの接続状況を確認可能

– 遅延しているクエリ等の抽出は可能

– クエリ実行中の完了時間等は確認できず

パフォーマンス遅延→SQLモニター

Page 53: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

53

ケース3 まとめ

SQLモニタリングで調査SQLモニタリングで調査

Ver 3.0

EMで調査EMで調査

Ver 2.0

Statspackで調査Statspackで調査

Ver 1.0

パフォーマンスデータコレクションで調査

クエリストアで調査

パフォーマンス遅延発生。原因調査してー。パフォーマンス遅延発生。原因調査してー。

N/A(利用状況モニター)

Page 54: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

54

まとめまとめ

Page 55: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

55

• Oracle脳の運用はSQL Serverでも応用できる

– RDBMSなので、考え方は同じ

• ただし、一部の機能はOracleにしかない

– 自動データ最適化やSQLプロファイル、SQLモニタリングなど

– 使い込んでると運用にインパクト

• Oracleのノウハウをその他のDBへ

まとめ

Page 56: [db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー 内山 義夫

56

無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。株式会社インサイトテクノロジーは本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。本書で使用している製品やサービス名の名称は、各社の商標または登録商標です。