11. 11
Oracle Database 性能分析の歴史
草創期のチューニングメソッド 時間ベースのチューニングメソッド
https://www.ogh.nl/downloads/ogh20080410_graham_wood.pdf
Graham Wood
Oracle Real World Performance Group
23. 23
待機はシステムコールや他のプロセス待ち時間
• ユーザーモードで ON CPU 以外のシステムコール発行後のカーネ
ルモード、スリープの時に待機時間
SP SP
BP
ハードウェア
OSカーネル
ユーザープロセス
システムコール 割込みハンドラ
• Enqueue
• Latch
• Mutex
• log file sync …
• SQL*Net message from client• db file sequential/scattered read
• direct path read
待機時間
待機時間
待機時間
ON CPU
24. 24
OSから見ると待機は Sleep / Disk Sleep の2種類
D
OR
S
ON CPU
Sleep
Disk Sleep
Runnable
•ON CPU の時間が DB CPU
•システムコール発行後のカーネルモードで ON CPU
の時間は待機時間に入る
•Latch、mutex などのスピンロックは ON CPU でス
ピンしている時間は DB CPU に計上される
•TCP/IP通信で、ソケットバッファ
に書いて送信後のクライアントか
らのパケット到着待ちのときは
Sleep する
•latch、mutex などの待機時間はス
ピンでタイムアウト後に Sleep した
時間 •I/Oシステムコール発効後はカーネルモー
ドにコンテキストスイッチ後、割込不可
でスリープする(CPUは使っていない)
•CPUが使われてなくてこの状態のプロセ
スがいると、iowat に計上される
•ランキュー待ち時間は DB CPU には含まれない
db file sequential/scattered read
direct path read
SQL*Net message to client
SQL*Net message from client
28. 28
OS は USE メソッドで分析
• CPU、メモリ、ストレージなどのコンポーネントをUtilization、
Saturation、Errorsの3つでボトルネックが発生していないか
出典:Systems Performance: Enterprise and the Cloud [ISBN-10:0133390098]
29. 29
DBインスタンスは時間ベースで分析
• DBで時間を使っているか
• DB Time の内訳をドリルダウン
出典:Optimizing Oracle Performance By: Cary Millsap, Jeff Holt(ISBN-13: 978-0596005276)
Introduction to Time-Based Analysis: Stop the Guessing!(Craig A. Shallahamer, OraPub,inc.)
DB Time
AP Time
Figure 1-1
30. 30
チューニング効果の高いSQLをリストアップ
• Elapsed、CPU Time、Gets、Reads でマトリックス化
• チューニング効果の高いSQLをリストアップ
DB Time に
占める割合
•SQL ordered by Elapsed
time / CPU Time / Gets で
1位
•SQLチューニングで Buffer
Gets を減らすとCPU使用率
が下がる
•インスタンス全体の 11.7%
のため効果は高い
出典: http://www.orapub.com/ppts-2015-ausoug-stop-guessing-use-oracle-time-based-analysis
34. 34
DBインスタンス分析項目例(1/3)
中項目 小項目 チェック内容 分析対象データ 分析対象項目
仕事量
SQL実行回数(秒間) なし AWR Report [Load Profile]-[Executes]
トランザクション数 (秒間) なし AWR Report [Load Profile]-[Transactions]
ログオンユーザー数 なし AWR Report [Key Instance Activity Stats]-[logons cumulative]
REDO生成量 (秒間) なし AWR Report [Load Profile]-[Redo size (bytes)]
ハードパース回数(秒間) なし AWR Report [Load Profile]-[Hard parses]
物理読込量 (秒間) なし AWR Report [Load Profile]-[Physical read ]
論理読込量 (秒間) なし AWR Report [Load Profile]-[Logical read]
インターコネクト通信量(秒間) なし AWR Report
[Load Profile]-[Global Cache blocks received] / [Global
Cache blocks served]
35. 35
DBインスタンス分析項目例(2/3)
中項目 小項目 チェック内容 分析対象データ 分析対象項目
DB処理時間
アクティブセッション数
・アクティブセッション数が
CPU_COUNTを超えていな
いか
AWR Report [Wait Classes by Total Wait Time]-[Avg Active Sessions]
時間モデル統計 なし AWR Report [Time Model Statistics]
待機クラス なし AWR Report [Foreground Wait Class]
Top N 待機イベント
・enqueue、latch、mutex
等の割合が高い場合は深堀調
査を行う
・平均待機時間が長い待機イ
ベントがないか
AWR Report [Top 10 Foreground Events by Total Wait Time]
I/Oレスポンス 20ms を上回っていないか AWR Report
[Foreground Wait Events]
[Wait Event Histogra]
[Wait Event Histogram Detai]
キャッシュフュージョン平均ブロッ
ク転送時間
20ms を上回っていないか AWR Report
[Global Cache and Enqueue Services - Workload
Characteristics]-[Avg global cache cr/current block
receive time (ms)]
I/Oは合計ではなく平均やヒストグラムでレスポンスが健全か見る
36. 36
DBインスタンス分析項目例(3/3)
中項目 小項目 チェック内容 分析対象データ 分析対象項目
メモリ使用状
況
SGA内訳 AWR Report [SGA Breakdown Difference]
共有プール内訳 AWR Report [SGA Breakdown Difference]
ラージプール内訳 AWR Report [SGA Breakdown Difference]
共有プール・ラージプールの
immediate 拡張有無
AWR Report [Memory Dynamic Components]
バッファキャッシュヒット率
・オンラインで95%を下回っていないか
・バッ チで90を下回らないか
AWR Report [Instance Efficiency Percentages]
RACバッファキャッシュヒット
率
・なし AWR Report
[Global Cache Efficiency
Percentages (Target local+remote
100%) ]
ライブラリキャッシュヒット率
・オンラインで95%を下回っていないか
・バッ チで90を下回らないか
AWR Report [Instance Efficiency Percentages]
SGA Target Advisory
・バッファキャッシュ拡張によりI/O量削減の可能性が高
いか
AWR Report [SGA Target Advisory]
BufferPoolAdvisory
・バッファキャッシュ拡張によりI/O量削減の可能性が高
いか
AWR Report [Buffer Pool Advisory]
PGA使用量 ・PGA_AGGREGATE_TARGET を超えていないか AWR Report [PGA Aggr Target Stats]
37. 37
高負荷SQL分析項目例
中項目 チェック内容 分析対象データ 分析対象項目
実行回数の多いSQL ・ベースラインおよび他の期間との比較 AWR Report SQL ordered by Executions
物理読込量の多いSQL(総計/1回当り) ・時系列で右肩上がりで増えているSQLがないか AWR Report SQL ordered by Reads
論理読込量の多いSQL(総計/1回当り) ・時系列で右肩上がりで増えているSQLがないか AWR Report SQL ordered by Gets
CPU時間の長いSQL(総計/1回当り) ・時系列で右肩上がりで増えているSQLがないか AWR Report SQL ordered by CPU Time
クラスタ待機時間の長いSQL(総計/1回当り) ・時系列で右肩上がりで増えているSQLがないか AWR Report SQL ordered by Cluster Wait Time
共有メモリ使用量の多いSQL ・共有メモリ使用量が 100MBを超えているSQLがないか AWR Report SQL ordered by Sharable Memory
Version Count の多いSQL ・時系列で右肩上がりで増えているSQLがないか AWR Report SQL ordered by Version Count
実行時間の長いSQL(総計/1回当り) ・elapsed が undo_retention を超えてい るSQLがないか AWR Report SQL ordered by Elapsed Time
合計と1回当りの両方で分析すると、一発で重い
のか、塵も積もればで上位なのかわかりやすい
43. 43
Exadata X5 からCellサーバのOS性能統計がAWRに
• AWRレポートに CellサーバのCPU使用率やI/OなどのOS性能統計、SmartScanなどの統計が
レポートされるようになった
Oracle Exadata Storage Server Software Performance Statistics in AWR Reports
Exadata Storage Server configuration and performance statistics are collected in the Automatic Workload
Repository (AWR), and the data is available in the AWR report. The Oracle Exadata section of the AWR report is
available in HTML or active report format.
The following sections are three main sections in the AWR report:
• Exadata Server Configuration: Hardware model information, software versions, and storage configuration
• Exadata Server Health Report: Offline disks and open alerts
• Exadata Performance Statistics: Operating system statistics, storage server software statistics, smart scan
statistics, and statistics by databases
The AWR report provides storage level performance statistics, not restricted to a specific instance or a
database. This is useful for analyzing cases where one database can affect the performance of another
database.
Oracle Exadata Database Machine System Overview 12c Release 1 (12.1) E51953-17
http://docs.oracle.com/cd/E50790_01/doc/doc.121/e51953/app_whatsnew.htm#DBMSO21849
46. 46
DB Time < CPU Time + Wait Time
• db file sequential read などのI/Oシステコールは発行してから返ってくるまでの時間のた
め、待機時間にカーネルモードでのCPU時間が含まれる
• CPU時間は db file sequential read などの待機時間と、CPU Time にダブルカウントされる
通常、極めて短時間のた
め目立つことはない
出典:https://www.slideshare.net/jberesni/awr1page-sanity-checking-time-instrumentation-in-awr-reports
47. 47
DB Time > CPU Time + Wait Time
• AIX on POWER ではCPU時間をOSから見て ON CPU の時間ではなく、SMT でCPU内で使用し
た時間を算出し、ソフトウェアから見て CPU Time が実際より短く計上されるケースがある
• 詳しくは以下参照
http://oracleprof.blogspot.jp/2013/02/oracle-on-aix-wheres-my-cpu-time.html
出典:https://www.slideshare.net/jberesni/awr1page-sanity-checking-time-instrumentation-in-awr-reports