Upgrade to Pro — share decks privately, control downloads, hide ads and more …

パフォーマンス・チューニング入門

 パフォーマンス・チューニング入門

2024年3月5日開催 Oracle DBaseCampで発表した資料です。
アーカイブ動画:https://youtu.be/PP-utlzC5Do

oracle4engineer

March 05, 2024
Tweet

Video

More Decks by oracle4engineer

Other Decks in Education

Transcript

  1. Copyright © 2024, Oracle and/or its affiliates 3 • 本セミナーでは、以下のようなポイントをご理解いただくことをゴールとしています。

    • Oracle Databaseにおけるパフォーマンス・チューニングの考え⽅ • パフォーマンス問題の原因を探る際の問題の切り分け⽅ • チューニングに役⽴つOracle Databaseのツール群および活⽤シーン ターゲットとなる層 • Oracle Databaseのパフォーマンス・チューニングについて学びはじめの⽅ • 改めてOracle Databaseにおけるパフォーマンス・チューニングの⽅法論について理解したい⽅ 本セッションのゴール ※Oracle DatabaseのエディションはEnterprise Edition前提でご説明します。
  2. 1. Oracle Databaseにおけるパフォーマンス・チューニングの考え⽅ • Oracle Databaseのパフォーマンス・チューニング関連マニュアル • Oracle Databaseのパフォーマンス・チューニング •

    2種類の性能評価指標 • Oracle Databaseにおける⼀般的なパフォーマンス問題 • パフォーマンス・チューニングに必要なこと • データベース統計 • DB Timeとアクティブ・セッション、待機イベント • Oracle Databaseのパフォーマンス改善⽅法のステップ 2. 性能の定常的な監視およびパフォーマンス・チューニングの補助機能 3. 性能問題のボトルネック箇所の特定例 4. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 4
  3. データベース・パフォーマンス・ チューニング・ガイド Database 2⽇でパフォーマンス・ チューニング・ガイド SQLチューニング・ガイド Oracle Databaseのパフォーマンス・チューニング関連マニュアル Copyright ©

    2024, Oracle and/or its affiliates 5 総合的なガイド 迅速な問題解決 SQLクエリの最適化 対象者: • Oracle Databaseの運⽤、メンテナンス およびパフォーマンスを担当するデータ ベース管理者(DBA) 対象者: • SQLのチューニング・タスクに関わる Oracle Database管理者(DBA)および アプリケーション開発者 対象者: • Oracle Databaseのパフォーマンスの チューニングおよび最適化を⾏うOracle Database管理者(DBA) 概要: • Oracle Databaseのパフォーマンスチュー ニングに関する総合的な情報を提供 • データベース統計を元にしたチューニング の考え⽅をはじめ、データベースインスタ ンスの設定、メモリ管理、I/Oの最適化、 アプリケーションの設計など、広範なトピッ クを網羅 • 基本的な理解を深め、データベース全 体のパフォーマンスを向上させるための戦 略的な⼿法を学ぶのに適している 概要: • 迅速な問題解決と即効性のあるパ フォーマンス改善のためのガイド • Oracle Databaseの提供する機能に基 づいた具体的なステップやヒントが提供さ れ、問題の特定から解決までのプロセス を説明 • Oracle Diagnostics Pack • Oracle Tuning Pack • Oracle Enterprise Manager Cloud Control (Cloud Control) 概要: • SQLの最適化とチューニングに特化 • Oracle Databaseにおける問合せオプ ティマイザや実⾏計画の最適化、問合 せ変換に関する説明、インデックスの効 果的な使⽤など、SQLクエリのパフォーマ ンスに関する詳細な情報を提供
  4. 参考: 関連ドキュメント Oracle Databaseのパフォーマンス・チューニング関連マニュアル Copyright © 2024, Oracle and/or its

    affiliates 6 関連マニュアル名称 データベース・ パフォーマンス・ チューニング・ガイド Database 2⽇で パフォーマンス・ チューニング・ガイド SQLチューニング・ ガイド データベース・パフォーマンス・チューニング・ガイド • ◦ Database 2⽇でパフォーマンス・チューニング・ガイド ◦ • SQLチューニング・ガイド ◦ • Oracle Database概要 ◦ ◦ ◦ Oracle Database管理者ガイド ◦ ◦ Oracle Multitenant管理者ガイド ◦ Oracle Databaseデータウェアハウス・ガイド ◦ Oracle Database VLDBおよびパーティショニング・ガイド ◦ Oracle Database SQL⾔語リファレンス ◦ Oracle Databaseリファレンス ◦ •: 当該マニュアル ◦: 関連マニュアル
  5. オラクル社による⻑年にわたる設計および経験に基づいたパフォーマンスに関する⽅法論 パフォーマンス向上のための投資 • ハードウェア・リソースによる性能向上 • CPU / メモリー / ストレージ

    • システム設計の⾒直しと、アプリケーション 効率の向上 より多くのワークロードを処理するための システム能⼒ • あらかじめスケーラビリティを考慮した設計 • 妨げる要因の排除 • 適切なアプリケーション設計および実装 • ハードウェア・コンポーネントの制限 • ソフトウェア・コンポーネントの制限 アーキテクトによるバランスのとれた設計 • ハードウェア・コンポーネント • CPU / メモリー / ストレージ / ネットワーク • ソフトウェア・コンポーネント • ユーザー・インターフェース / ビジネス・ロジック / ユーザーのリクエストを管理するリソース / データおよびトランザクション • 要件にあったシステム・アーキテクチャの構成 Oracle Databaseにおけるデータベース・パフォーマンスの基本 Copyright © 2024, Oracle and/or its affiliates 7 1. 投資の選択肢 2. スケーラビリティ 3. システム・アーキテクチャ 4. アプリケーション設計の原則 5. ワークロードのテスト、 モデル化および実装 6. 新規アプリケーションのデプロイ 1. アプリケーション設計の簡潔さ 2. データのモデル化 3. 表および索引の設計 4. ビューの使⽤ 5. SQLの実⾏効率 6. アプリケーションの実装 7. アプリケーション開発の傾向 1. データのサイズ設定 • 将来を想定した拡張を考慮 2. ワークロードの⾒積り • 類似システムからの推定 / ベンチマーク 3. アプリケーションのモデル化 4. 設計のテスト、デバッグおよび検証 1. ロールアウトの⽅法 • ビッグ・バン・アプローチとトリクル・アプローチ • 充分なテストによる判断 2. パフォーマンス・チェックリスト • アプリケーションのデプロイ時に発⽣しそうなパ フォーマンス問題を確認するための チェックリスト
  6. Oracle Databaseのパフォーマンス・チューニング: • アプリケーションの処理速度が事前に設定された⽬標を満たすようにデータベースの効率を最適化すること そのために、システム・リソース利⽤の最適化、アプリケーションで利⽤するSQLの最適化がおこなわれる パフォーマンスは要件定義、設計段階から意識することが重要 • 「◦分以内」等の要件を決定 • 設計、開発、本番稼動後の各段階で、各担当者がパフォーマンスを考慮

    本番稼動後のシステムは成⻑していくため、その⽇々の成⻑を把握して システム・リソース利⽤の最適化、アプリケーションで利⽤するSQLの最適化 を維持し続ける • 利⽤者数の増⼤ • 扱うデータ量の増⼤ • サブシステムの追加 Oracle Databaseのパフォーマンス・チューニング Copyright © 2024, Oracle and/or its affiliates 8 チューニング によって 得られる利益 コスト 設計 開発 本番 時間 後から実施するチューニング作業は、 労⼒とコストに対して効果が得にくい 傾向にある
  7. 2種類のパフォーマンス・チューニング インスタンス・チューニングの検討事項 • データベースの初期設計でボトルネックを回避 • メモリの割り当て、I/O要件、オペレーティング・システムのチューニングを考慮 パフォーマンスの原理 • システム構成に応じた適切なリソース割り当て •

    ボトルネックを特定し、適切な変更をおこない、影響を低減または排除 ベースラインの重要性 • 実証されたパフォーマンス・ベースラインを使⽤して問題を⽐較 • アプリケーション、データベース、オペレーティング・システム、ディスクI/O、ネットワー クの統計を収集 症状および問題点 • パフォーマンスの低下の症状を正しく識別し、根本的な問題を理解 • 物理I/Oの遅さ、ラッチの競合、CPUの過剰使⽤などの問題点を考慮 チューニングを実施する時において • プロアクティブな監視による気付きとボトルネックの解消 • ボトルネックの解消には、アプリケーションの変更、Oracleの変更、ハードウェア構 成の変更などが含まれる SQLチューニングは、効率的なSQL⽂の作成が不可⽋であり、データベー スSQL処理エンジンに関する理解が重要 • ⼤量トランザクション・システムでは⾮効率なSQL⽂が使われないよう注意 • オンライン・トランザクション処理アプリケーションは索引の適切な使⽤が重要 • 意思決定⽀援システムでは多くの場合、全表スキャンが⾏われる 表のほとんどの⾏にアクセスする必要があるためであり、選択性が重視されない → スター・スキーマによる構造の簡素化とデータ取得のパフォーマンス向上 問合せオプティマイザおよび実⾏計画 • 問合せオプティマイザは、SQL⽂の実⾏計画を決定する際に、システム上で収 集された統計情報を活⽤する • これにより、最適な実⾏計画が選択され、処理時間が最⼩限に抑えられる Oracle Databaseのパフォーマンス・チューニング Copyright © 2024, Oracle and/or its affiliates 9 インスタンス・チューニング SQLチューニング マニュアル: データベース・パフォーマンス・チューニング・ガイド パフォーマンス・チューニングの概要
  8. スループットとレスポンスタイム スループット性能が求められる処理: OLTP処理 • ユーザー数が多く、少量の⾏にアクセスし同時実⾏する • ⼀般的にはミリ秒レベル • TPSを重視し、単体処理のリソース利⽤の極⼩化を⽬指す レスポンスタイム性能が求められる処理:

    バッチ、DWH • ユーザー数は少なく、⼤量の⾏にアクセスし⼀括処理する • ⼀般的には秒〜分レベル • 単体SQLのレスポンスタイムを重視し、単体処理でCPU、 I/Oリソースを100%割り当てることを⽬指す 2種類の性能評価指標 Copyright © 2024, Oracle and/or its affiliates 10 スループット: 単位時間あたりの処理量(TPS) TPS: Transaction Per Second (1秒当たりのトランザクション) レスポンスタイム: 1処理あたりの所要時間 スループットを増やした場合にもレスポンスタイムが劣化せずに処理できる状態 ⇒ スケーラブルである状態 100% CPU/IO CPU/IO リソースを100% 使い切ることで、 全体の処理を 早く終えるように︕ 少ないリソースで処理することで、 多くの処理をこなせるように︕ CPU/IO CPU/IO
  9. よくあるパフォーマンス問題および原因の例 【よくあるパフォーマンス問題】 【⼀般的なパフォーマンス問題例】 • CPUのボトルネック • メモリー構造のサイズ不⾜ • I/O容量の問題 •

    アプリケーションによるOracle Databaseの⾮効率的な使⽤ • 同時実⾏による問題 • データベース構成の問題 • 短期間のパフォーマンス問題 • 時間の経過によるデータベースのパフォーマンスの低下 • 効率の悪いまたは負荷が⼤きいSQL⽂ • オブジェクト競合 • SQL⽂のチューニング後の予期しないパフォーマンスの低下 など様々… Oracle Databaseにおける⼀般的なパフォーマンス問題 Copyright © 2024, Oracle and/or its affiliates 11 Before: 短時間で完了していた特定の処理が、時間がかかるように なってきた After①: 利⽤ユーザが増えたことによるCPU*ボトルネック ⇒ CPUリソースを追加することで対応 After②: キャッシュ・ヒット率低下による物理I/O増 ⇒ SGAサイズを増やすことで対応 After③: キャッシュ・ヒット率低下による物理I/O増 ⇒ 直前にメンテナンス・タスクが動いており運⽤⾒直しで対応 After④: 索引の断⽚化による性能劣化 ⇒ 定期的に索引を再作成することで対応 After⑤: データ量が増えたことによるI/Oボトルネック ⇒ 過去データを参照対象から除外するようにSQL⾒直し *ボトルネック…リソースの競合が最も激しいポイント 参考: ⾨外不出のOracle現場ワザ
  10. • システム全体を考慮して、ボトルネック箇所を特定することが必要 • Webシステムが複雑化するにつれ、問題の切り分けは困難になりがち • ボトルネック箇所に対して、適切なチューニングを⾏う必要がある • アプリケーションやネットワークに問題があるのにデータベースをチューニングしても効果はない Copyright ©

    2024, Oracle and/or its affiliates 12 データベース Webサーバー 処理に時間 がかかる... システム全体からボトルネックを特定して改善すること パフォーマンス・チューニングに必要なこと メモリ、CPUが ⾜りない︖ リクエストが⼗分受け 付けられない︖ ネットワーク帯域幅 が狭い︖ 接続待ち︖ Javaコードの問題︖ ファイアーウォール インターネット APサーバー DBの設定︖ SQLの問題︖
  11. • データベース内のボトルネックを特定し、ボトルネック箇所を改善 データベース内のボトルネックを特定して改善すること パフォーマンス・チューニングに必要なこと Copyright © 2024, Oracle and/or its

    affiliates 13 チューニングは幅広い知識 が必要なため、DBの管理 作業の中でも最も難しいと いわれることも。 アプリケーション ⽂の問題︖ SELECT A 共有プール データベース・ バッファ・キャッシュ REDOログ・ バッファ 制御ファイル データ・ファイル REDOログ・ファイル CKPT SQL⽂ 解析情報 実⾏計画 データ・ディクショナリ A A 変更履歴 A→B B サーバー プロセス メモリの利⽤ 効率は︖ 必要以上に⼤量のデータ を読んでいないか︖ ディスクI/Oが 遅い︖ データの断⽚化︖ アクセスの集中︖ DBWn LGWR
  12. 処理時間や実⾏回数を測定する ある処理のボトルネックを調べる: • DB(CPU) の時間がいちばん多いが、 Disk I/Oも多い • 何故、キャッシュは利⽤されていないのか︖ •

    SQLは何回実⾏されたのか • Oracle Database内部は、 Oracle Database⾃⾝が分析のための 統計情報や履歴を取得しており、 それを利⽤して分析をおこなう パフォーマンス・チューニングに必要なこと Copyright © 2024, Oracle and/or its affiliates 14 APサーバ /ネットワーク CPU リソース 待ち DISK I/O DB Server Oracle Elapsed Time ! " # $ " START END ② ③ ④ ⑤ ⑥ 経過時間 実際の処理時間 ①AP全体 6.0 秒 0.4 秒 (6.0 – 5.6) ②Webブラウザ 5.6 秒 1.0 秒 (5.6 – 4.6) ③APサーバ 4.6 秒 0.6 秒 (4.6 - 4.0) ④DB(CPU) ー 2.3 秒 (0.3 + 1.0 + 1.0) ⑤DB(リソース待ち) ー 0.3 秒 ⑥DB(DISK I/O) ー 1.4 秒 (0.9 + 0.5) ※アプリケーションと連携した調査はAPMを利⽤することで効率化できる (APM: Application Performance Monitoring) Web ブラウザ ① 実際の処理時間 時間
  13. Oracle Databaseのパフォーマンス計測に使⽤される主なデータベース統計 (定期的にAWRへ格納 ※後述) データベース内での操作タイプによる経過時間を測定 • V$SESS_TIME_MODEL、V$SYS_TIME_MODEL • DB時間(DB Time)

    • すべてのユーザー・レスポンス時間のDB時間 • アイドル状態でないすべてのユーザー・フォアグラウンド・セッションの時間を合計 して計算されるため、経過時間を越えることもありえる • インスタンス30分間に4つのアクティブ・セッションがあればDB時間は約120分 データベースのセッション・アクティビティのサンプル • V$ACTIVE_SESSION_HISTORY • 毎秒サンプリング • アクティブなセッションのみ取得 • 期間を指定することでASHレポートを出⼒ データベース統計 Copyright © 2024, Oracle and/or its affiliates 15 時間モデル統計 アクティブ・セッション履歴の統計 ASH: Active Session History 待機イベント統計 セッションおよびシステム統計 処理を継続する前にイベントが完了するまで待機した際の統計 • V$SESSION_EVENT、V$SESSION_WAIT_CLASS、 V$SYSTEM_EVENT、V$SYSTEM_WAIT_CLASS • 分析を容易にするため「待機クラス」に分類 • アプリケーション (例: ⾏レベル・ロック) • Commit (例: コミット後のREDOログ書込み確認の待機) • User I/O (例: ディスクからのブロック読み取りの待機) etc. セッションおよびシステム・レベルの多数の累積統計 • V$SESSTAT および V$SYSSTAT • 例えば、すべてのセッションのOracle Database CPU使⽤率を取得 することや、それぞれのセッション毎のCPU使⽤率を取得することがで きる マニュアル: Oracle Databaseパフォーマンス・チューニング・ガイド 19c CPU使⽤率
  14. DB Time (データベース時間) • すべてのデータベース内処理に要したセッション (フォアグラウンド) の合計時間 (CPU時間、I/O時間、⾮アイドル待機時間が含む) Active Session

    (アクティブ・セッション) • 現在データベース内で処理を⾏っている(DB Time中の)セッション %Activity (セッションの平均アクティビティ) • 実経過時間とアクティブ・セッション時間の割合 DB Timeとアクティブ・セッション(1) Copyright © 2024, Oracle and/or its affiliates 16 SQL 本を閲覧する カートに⼊れる 精算する 時間 = データベースを使⽤した時間 ⼀冊の本のレビューを読む アクティブ・セッション YouTube動画: 7) 津島博⼠のDBパフォーマンスチューニング
  15. 複数セッションのとき DB Time︓すべてのセッションのDB Timeの合計 Average Active Sessions (平均アクティブ・セッション数) • すべてのセッションの平均アクティビティ(%Activity)の合計

    • ある時間帯のアクティブなセッション数の合計 • アクティブ・セッションが多い時間帯が負荷が多い(負荷指標) DB Timeとアクティブ・セッション(2) Copyright © 2024, Oracle and/or its affiliates 17 ユーザ2 ユーザ3 = データベースを使⽤した時間 時間 時間t には2つのアクティブ・セッションが存在する t ユーザ1 ユーザn YouTube動画: 7) 津島博⼠のDBパフォーマンスチューニング
  16. DB Timeの可視化 アクティブ・セッション(DB Time中のセッション)数から負荷を⾒る • 多いところの内訳を分析する DB Timeとアクティブ・セッション(3) Copyright ©

    2024, Oracle and/or its affiliates 18 YouTube動画: 7) 津島博⼠のDBパフォーマンスチューニング 平均アクティブ・セッション = 全アクティブ・セッションの経過時間 全データベース時間 時間 1 2 3 4 アクティブ・セッション数 経過時間 t0 t1 ユーザ1 ユーザ2 ユーザ3 ユーザn 最も負荷が多い
  17. プロセスがCPUを使⽤していない時間 • アイドル待機イベント(SQLのリクエスト待ち) • ボトルネックが存在する場合に、原因がDBリソースではないことを意味する • 例) “SQL*Net message from

    client”などのSQL*Net関連のイベント⇒ネットワークの問題 • ⾮アイドル待機イベント(SQL実⾏中) • DBリソース(バッファ競合、I/O競合、ラッチ競合など)に関連する待機時間 DB Timeと待機イベント(1) Copyright © 2024, Oracle and/or its affiliates 19 YouTube動画: 7) 津島博⼠のDBパフォーマンスチューニング サーバー プロセス アプリケーション プロセス Disk Read 待機イベント アイドル アイドル 解析処理 CPU 解析/REDO⽣成 変更処理 CPU コミット 待機イベント アイドル DB Time = データベースを使⽤した時間 サーバープロセスが CPUを使った時間を 「DB CPU」とよぶ
  18. バックグラウンド・プロセス DB Timeはフォアグラウンド・プロセスのセッション時間を計測するが、バックグラウンド・プロセスの影響も現れる • 例えば、log parallel write が多いと log file

    sync も増える • バックグランド・プロセスはH/Wリソースが問題なければ影響は少ない DB Timeと待機イベント(2) Copyright © 2024, Oracle and/or its affiliates 20 YouTube動画: 7) 津島博⼠のDBパフォーマンスチューニング サーバー プロセス アプリケーション プロセス Disk Read 待機イベント アイドル アイドル 解析処理 CPU 解析/REDO⽣成 変更処理 CPU コミット 待機イベント アイドル ログ書込み 待機イベント(log parallel write) バックグランド プロセス(LGWR) DB Time = データベースを使⽤した時間
  19. DB Timeから⾒るCPU使⽤率 DB Time (Oracle Databaseの動作時間)のうち、CPU を使⽤している時間がDB CPU 例) CPU数2コア、時間が60秒間の場合

    ① 合計CPU時間︓120秒(2×60) ② User時間︓70秒 ③ System時間︓20秒 ④ DB Time︓100秒 ⑤ DB CPU︓60秒 ⑥ CPU使⽤率︓(70+20)÷120×100=75% 【参考】CPU使⽤率の考え⽅ Copyright © 2024, Oracle and/or its affiliates 21 ※User…ユーザー・プロセスに使われたCPU時間 ※System…システムで使⽤されたCPU時間 ※Idle…CPUを使⽤していない時間 ※I/O Wait…I/Oの待機に使⽤されたCPU時間 参考: 津島博⼠のパフォーマンス講座 第17回 チューニングについて ①合計CPU時間(コア数×時間) ⑤DB CPU Wait (待機) ④DB Time ②User + ③System Idle + I/O Wait (未使⽤時間) 空きCPU時間 DB以外の CPU時間 ※後述のAWRレポートなどで確認
  20. AWRレポートの出⼒例 【参考】CPU使⽤率の考え⽅ Copyright © 2024, Oracle and/or its affiliates 22

    ← 全て時間で取得 (1/100秒単位) 全体のCPU時間 = BUSY_TIME + IDLE_TIME = 760,378 + 3,523,005 = 4,283,383 %busy = BUSY_TIME / 全体のCPU時間 * 100 = 760,378 / 4,283,383 * 100 = 17.75
  21. Oracle Databaseのパフォーマンス改善⽅法のステップ Copyright © 2024, Oracle and/or its affiliates 23

    1. 初期標準チェックを実⾏ a. ユーザーからのフードバックを得て、パフォーマンス⽬標を設定 b. 平常時と性能劣化時のOS、Oracle Database、アプリケーションの統計を取得 c. 性能に関係のあるすべてのサーバーのOS、ハードウェアの健全性を確認 6. パフォーマンス⽬標が達成されるまで3から5のステップを繰り返す 3. 症状からシステムの概念モデルを作成し、問題の原因を把握 4. ⼀連の修正処理とシステムに対して予想される動作を提⽰し、 アプリケーションに対して最も有効な処理から順に適⽤し、効果を検証 5. ユーザーの認識と期待通りの効果があるかを確認 2. Oracle Databaseで最もよく⾒られる誤りの上位10項⽬を確認 参考: パフォーマンスを概念的にモデル化する際の意思決定プロセスの例 概念モデル(conceptual model) ⇒ システムのパフォーマンス問題を 理解するためのツールやアプローチ • 問題の原因や影響を視覚化 • 概念的な構造を表現
  22. データベースの性能問題の発⾒・分析・解決をシームレスに実現 Oracle Databaseインスタンスの定常監視と性能診断 SQLチューニングのアドバイスとSQL分析 Oracle Diagnostics PackおよびOracle Tuning Pack Copyright

    © 2024, Oracle and/or its affiliates 25 Oracle Diagnostics Pack ※ Oracle Tuning Pack ※ 特定の時間の 処理を確認 この時間帯に⾏われていた 処理の内訳を確認 実⾏計画と各種統計を確認 時間と待機の概要 I/Oの概要 SQLの概要 ※ Enterprise Edition のオプション機能 初期化パラメータ: CONTROL_MANAGEMENT_PACK_ACCESS を設定 設定値: NONE / DIAGNSOTIC / DIAGNOSTIC+TUNING(デフォルト)
  23. Oracle Active Data Guard 【参考】Oracle Databaseのライセンスおよび関連製品 Copyright © 2024, Oracle

    and/or its affiliates 26 Enterprise Edition (EE) Database Core Database Options & Other Products • Oracle Data Guard • パラレル処理 • オンライン索引再ビルド • オンライン表再定義 • データベース・リソース・ マネージャ • SQL計画の管理 • SQLチューニング・セット • ⾼速増分バックアップ • 多重化バックアップ・セット • ブロックレベル・メディア・リカバリ • フラッシュバック・データベース • フラッシュバック・トランザクション 問合せ • Transaction Guard • 問合せ結果キャッシュ • PL/SQLファンクション 結果キャッシュ • 適応実⾏計画 • ファイングレイン監査 • Privilege Analysis • Real Application Security • 仮想プライベート・データベース etc. Standard Edition 2 (SE2) • 基本機能 • PL/SQL • データベース・リンク • 開発機能 etc. Oracle GoldenGate Oracle Partitioning Oracle Database In-Memory Oracle TimesTen Application-Tier Database Cache Oracle On-Line Analytical Processing (OLAP) Oracle Real Application Clusters (Oracle RAC) Oracle RAC One Node ⾼可⽤性 性能 セキュリティ Oracle Advanced Compression マルチテナント Oracle Advanced Security Oracle Label Security Oracle Key Vault Oracle Audit Vault and Database Firewall Oracle Database Vault Oracle Cloud Management Pack for Oracle Database Oracle Database Lifecycle Management Pack for Oracle Database Oracle Diagnostics Pack Oracle Tuning Pack Oracle Data Masking and Subsetting Pack 運⽤管理 Oracle Multitenant テスト⽀援 Oracle Real Application Testing EEオプション 別売製品
  24. 全エディションが従量制で利⽤可能、サポートもサービス費⽤に含む 【参考】Base Database Service: エディション Extreme Performance High Performance Enterprise

    Edition Multitenant Partitioning Advanced Compression Advanced Security, Label Security, Database Vault Real Application Clusters DB In-Memory Active Data Guard • 完全なデータベース・インス タンス • 表領域暗号化 Standard Edition • 全てのEE 標準機能 - Data Guard - Hybrid Columnar Compression(HCC) - パラレル処理 etc Real Application Testing OLAP Management Packs (Data Masking and Subsetting Pack, Diagnostics and Tuning Packs) 全てのデータベース・オプション機能 が利⽤可能 Base Database Serviceでは、 全てのエディションで 表領域暗号化機能を提供 主なデータベース・オプション機能 が利⽤可能 Management Packs (Database Lifecycle Management Pack, Cloud Management Pack for Oracle Database) ¥30.1/h ¥124.194/h ¥60.214/h ¥188.174/h * 料⾦︓CPU当たり、2024年3⽉現在 https://www.oracle.com/cloud/price-list.html Copyright © 2024, Oracle and/or its affiliates 27
  25. データベースのパフォーマンス情報を簡単に収集して分析 • パフォーマンス統計を⾃動収集 • パフォーマンス履歴の表⽰および分析 • レポートやビューを簡単に⽣成 • AWRデータを⾃動で素早く分析 •

    具体性、⼀貫性、実⾏可能性を備え たパフォーマンス提案 • アクティブ・セッションの情報を⾃動収集 • レポートやビューを簡単に⽣成 Oracle Diagnostics Pack Copyright © 2024, Oracle and/or its affiliates 28 ⾃動ワークロード・リポジトリ(AWR) AWR: Automatic Workload Repository ⾃動パフォーマンス診断(ADDM) ADDM: Automatic Database Diagnostic Monitor アクティブ・セッション履歴(ASH) ASH: Active Session History 定常的なパフォーマンス診断 ⼀時的なパフォーマンス問題の診断 時間モデル統計 • V$SESS_TIME_MODEL • V$SYS_TIME_MODEL アクティブ・セッション 履歴の統計 • V$ACTIVE_SESSION_HISTORY 待機イベント統計 • V$SESSION_EVENT • V$SESSION_WAIT_CLASS • V$SYSTEM_EVENT • V$SYSTEM_WAIT_CLASS セッション統計 システム統計 • V$SESSTAT • V$SYSSTAT システム上で負荷の⾼い SQL⽂ AWR AWRレポート スナップショット スナップショット スナップショット スナップショット ADDM 診断結果/アドバイス AWR スナップショット スナップショット スナップショット スナップショット 時間 1 2 3 4 アクティブ・セッション数 経過時間 t0 t1 ユーザ1 ユーザ2 ユーザ3 ユーザn 最も負荷が多い
  26. AWR: Automatic Workload Repository SGA内の統計情報や負荷の⾼いSQLの情報を定期的に AWRスナップショットとして取得 • SQLをつかわないカーネル・コールのため負荷が少ない AWRレポート •

    ある2つの時点で取得した稼動統計情報の差分を基に、 その間のパフォーマンス統計データをレポートに出⼒ • HTMLもしくはTEXT形式で出⼒ ⾃動ワークロード・リポジトリ(AWR) Copyright © 2024, Oracle and/or its affiliates 29 SGA 統計情報 負荷の⾼いSQL … 60分毎 (デフォルト) MMON AWR (SYSAUX表領域) 8⽇間分 (デフォルト) 経過時間 累 積 統 計 情 報 スナップショットid=101 id=102 id=101から102までの パフォーマンス 統計データ AWRレポート AWRレポートから得られる情報例 • スナップショット詳細 • ロード・プロファイル • サーバー・プロセスのイベントトップ10 • インスタンス効率(%) • SQL統計 • 共有プール統計 • IO統計 • セグメント統計 • SQL⽂ スナップショット スナップショット スナップショット スナップショット
  27. エディション制限なくご利⽤いただけるツール Statspack: Statistics Packageの略 • Diagnostics Packを利⽤できない環境では、 Statspackを利⽤してOracle Databaseインスタンスの統計 情報が収集可能

    • 別途インストールが必要 • 定期的なスナップショット取得の為の設定が必要 • レポート形式はテキストのみ • 分析レポート内に出⼒されるSQL⽂は⼀部のみの場合も • SQLを利⽤して内部表(V$ビュー)からスナップショットを取得 【参考】Statspack Copyright © 2024, Oracle and/or its affiliates 30 参考: AWRを基本からおさらいしよう - Statspackの場合は︖ Statspackレポート例) AWRは、Statspackの進化版
  28. スナップショット スナップショット スナップショット スナップショット ADDM: Automatic Database Diagnostic Monitor AWRのデータを定期的に分析し、データベースのパフォー

    マンスを監視および診断 • AWRに収集されたデータを定期的に分析し、データベースの パフォーマンスを監視 / 診断 • 問題(DB Timeへの影響が⼤きいもの)を発⾒すると、解決 ⽅法とともに画⾯に表⽰ ⾃動パフォーマンス診断(ADDM) Copyright © 2024, Oracle and/or its affiliates 31 SGA 統計情報 負荷の⾼いSQL … MMON AWR ADDM 診断結果/アドバイス 起動 スナップショットの 差分を診断 SQLチューニング・アドバイザの 実⾏を推奨 Enterprise Managerの画⾯例
  29. Copyright © 2024, Oracle and/or its affiliates 32 短期間のパフォーマンス問題の分析 •

    アクティブ・セッションの情報を1秒ごとにメモリー(SGA)に格納 • SGAから10秒ごとに表に格納 • 期間を指定し、ASHレポートを⽣成可能 アクティブ・セッション履歴(ASH) Enterprise Managerの画⾯例) 時間 1 2 3 4 アクティブ・セッション数 経過時間 t0 t1 ユーザ1 ユーザ2 ユーザ3 ユーザn 最も負荷が多い
  30. 複雑で時間のかかるSQLチューニング・タスクの⾃動化とSQLのリアルタイム分析 • SQL⽂のパフォーマンスを向上するため の推奨事項を提⽰ • オブジェクト統計の収集 • 索引の作成 • SQL⽂のリライト

    • SQLプロファイルの作成 • SQL計画ベースラインの作成 • 指定したワークロード(1つ以上のSQL) に対して、SQLアクセスに適した構造を 推奨 • 索引 • マテリアライズド・ビュー • マテリアライズド・ビュー・ログ • パーティション • 実⾏中のSQLに対して実⾏計画や処 理の進捗状況を確認可能 • 5秒以上のCPU時間またはI/O時間を 消費しているSQL • パラレル実⾏されているSQL • MONITORヒントを指定しているSQL • パフォーマンス・メトリックなどを含むSQL 監視レポートを⽣成および表⽰ Oracle Tuning Pack Copyright © 2024, Oracle and/or its affiliates 33 SQLチューニング・アドバイザ SQLアクセス・アドバイザ リアルタイムSQL監視 ADDMによってアドバイザ実⾏を提案されることも リアルタイムにSQL性能確認 AWR ADDM SQLチューニング・アドバイザ SQLアクセス・アドバイザ セグメント・アドバイザ※ : ※セグメント・アドバイザは標準機能 スナップショット スナップショット スナップショット スナップショット
  31. 問題を特定する⼿順 1. 最初に参考になるものがないか「ADDM Reports」を 確認する 2. 「Report Summary」で問題を特定する 3. インスタンス以外であれば「SQL統計」で問題のSQL

    を特定する 【AWRレポートの構造 (19cの場合)】 • インスタンスやPDB、AWRスナップショットの情報 • Report Summary • Top ADDM Findings by Average Active Sessions • Load Profile • Instance Efficiency Percentages (Target 100%) • Top 10 Foreground Events by Total Wait Time • Wait Classes by Total Wait Time • Host CPU • Instance CPU • IO Profile • Memory Statistics • Database Resource Limits • Cache Sizes • Shared Pool Statistics • Main Report • RAC Statistics AWRからの解析 Copyright © 2024, Oracle and/or its affiliates 35 YouTube動画: 7) 津島博⼠のDBパフォーマンスチューニング Blog: 津島博⼠のパフォーマンス講座 第67回 AWRの分析について
  32. ADDMを確認① AWRレポート例(2) Copyright © 2024, Oracle and/or its affiliates 37

    推奨事項 として提⽰した数 SQLチューニング・ アドバイザを推奨
  33. ADDMを確認② AWRレポート例(3) Copyright © 2024, Oracle and/or its affiliates 38

    セグメント・アドバイザ を推奨 アプリケーションのロジック⾒直し を推奨 パーティション化を推奨 ※パーティション化: ⼤きな表や 索引を分割して管理するしくみ
  34. SQL統計(Elapsed Time)とActive Session History (ASH) Report AWRレポート例(4) Copyright © 2024,

    Oracle and/or its affiliates 39 Executionsが0 スナップショット間(約1時間)で終了していない INDEX - RANGE SCAN ← SQLの実⾏時間が⻑い順に表⽰されるSQL統計 ←上位 SQL⽂/上位待機イベントが表⽰されるASHレポート
  35. Copyright © 2024, Oracle and/or its affiliates 41 まとめ Oracle

    Databaseにおけるパフォーマンス・チューニングとは 性能の定常的な監視およびパフォーマンス・チューニングの補助機能 性能問題のボトルネック箇所の特定例 • アプリケーションの処理速度が事前に設定された⽬標を満たすように、システム・リソース利⽤の最適化、アプリケーションで 利⽤するSQLの最適化などを⾏うこと • パフォーマンス問題にはリソース不⾜、待機時間、⾼負荷SQLなど様々な原因が考えられる • AWRなどでDB TimeからCPU使⽤時間、待機時間を確認し、ボトルネックを特定 • パフォーマンス情報の分析にご活⽤いただけるOracle Diagnostics Pack • 定常的なパフォーマンス診断: AWR、ADDM • ⼀時的なパフォーマンス診断: ASH • SQLチューニング・タスクの⾃動化とリアルタイム分析にご活⽤いただけるOracle Tuning Pack • AWRレポートからの解析 • 対象となる時間帯の全体感を確認 • ADDMの確認