専用Exadataインフラストラクチャ上のAutonomous AI DatabaseのHigh Performanceの機能
この記事では、専用Exadataインフラストラクチャ上のAutonomous AI Databaseの主なパフォーマンス・チューニング機能について説明します。
この項では、「お客様」という用語は、特定のタスクの実行を担当する組織内のユーザーを意味するために広く使用されています。アプリケーションDBAの場合もあれば、アプリケーション開発者の場合もあります。
Autonomous AI Databaseには、データベースのパフォーマンスを自動的に監視、分析および最適化する機能がいくつか含まれています。Oracle Autonomous AI DatabaseのSQLチューニングおよびパフォーマンス管理機能の完全なリストと、その使用方法の詳細は、Oracle Database 19c SQLチューニング・ガイドまたはOracle Database 26ai SQLチューニング・ガイドを参照してください。
次に示すAutonomous AI Databaseの主なパフォーマンス・チューニング機能の幅広いカテゴリ化を確認できます。
ヒント :
次のイメージでは、さらに探索する機能をクリックできます。事前定義済データベース・サービス
アプリケーションからデータベースへの接続方法、およびデータベースへのSQLコールのコーディング方法によって、アプリケーションのトランザクション処理およびレポートの操作の全体的なパフォーマンスが決まります。
ヒント :
事前定義済データベース・サービスの主な特性と、これらの特性に基づいて様々なデータベース・サービスのセットを比較する表を確認し、アプリケーションのパフォーマンス要件に適したデータベース・サービスを決定してください。接続プール
Autonomous AI Databaseに接続する場合、接続プールを使用して、個々の接続を繰り返し作成および破棄することによるパフォーマンスのオーバーヘッドを削減できます。これは、アプリケーションのデータベースとの対話のパフォーマンスに大きな影響を与えるもう1つの要因です。
通常、継続的な可用性を提供するようにアプリケーションを設計または拡張する場合にのみ、接続プールの使用を検討します。ただし、ほぼすべてのトランザクション処理アプリケーションで、個々の接続ではなく接続プールを使用することはメリットになりえます。接続プールを使用すると、次のメリットがあります:
- 新しい接続オブジェクトの作成回数を減らします。
- 接続オブジェクトの再利用を促進します。
- 接続の取得プロセスを速めます。
- 接続の維持に費やされるリソース量を制御します。
- 接続オブジェクトを手動で管理するために必要なコーディングの労力を削減します。
特殊用途の接続機能
-
コロケーション・タグ付けは、特定のトランザクション処理アプリケーションで役立つ、このような機能の1つです。アプリケーションが同じデータベース・サービスに繰り返し接続する場合、コロケーション・タグ付けを使用すると、そのようなすべての接続を、接続のデータベース側で通常実行されるロード・バランシング処理をバイパスして同じデータベース・インスタンスに転送できます。詳細は、Oracle Database 19cまたはOracle Database 26ai のクライアント接続のCOLOCATION_TAGを参照してください。
-
共有サーバー構成は、接続プーリングなしで設計されたレガシー・アプリケーションをメンテナンスするためにAutonomous AI Databaseがサポートするもう1つの機能です。共有サーバー・アーキテクチャを使用すると、データベース・サーバーは多数のクライアント・プロセスで非常に少ないサーバー・プロセスを共有することを許可できます。これにより、アプリケーションでサポートできるユーザーの数が増えます。このようなレガシー・アプリケーションに共有サーバー・アーキテクチャを使用すると、アプリケーション自体を変更せずにスケール・アップできます。
Autonomous Container Database (ACD)のプロビジョニング中に共有サーバー接続を有効にできます。この設定は、その中に作成されたすべてのデータベースに適用されます。手順については、Autonomous Container Databaseの作成を参照してください。
セッションの多重化などの機能を含む共有サーバーの詳細は、『Oracle Database 19c Net Services管理者ガイド』または『Oracle Database 26ai Net Services管理者ガイド』も参照してください。
Autonomous Container Databaseに対して共有サーバー接続を有効にした後は、接続文字列を変更する必要はありません。デフォルトは「Dedicated」に設定されています。
ノート:
共有サーバー対応Autonomous Container Databaseの下に作成された特定のAutonomous AI Databaseの共有サーバーを無効にすることはできず、共有サーバー対応Autonomous Container Databaseの下に作成されたAutonomous AI Databaseの専用接続を使用することはできません。
SQLパフォーマンス・チューニング機能
優れたアプリケーションを作成する第一歩は、SQLを適切に記述することです。Oracle Autonomous AI Databaseには、高パフォーマンス・アプリケーションを構築し、WebおよびPL/SQLコードを検証するための多数の機能が用意されています。これらの機能の一部を次に示します。
- 自動索引付け
- オプティマイザの統計およびヒント
- SQL計画のパフォーマンス低下の自動解決
- ランナウェイSQL文の自動隔離
- SQL計画管理
- SQLチューニング・セット
- SQLトレース
アプリケーションを開発する際に、Oracle Database Actions (Autonomous AI Databaseに組み込まれている)とOracle SQL Developer (開発システムにインストールしている無料アプリケーション)の両方で提供されるSQLワークシートを使用すると、記述しているSQLコードでこれらの機能がどのような影響を与えるかをすぐに学習し、コードを改善できます。
SQLトレース
アプリケーション操作が予想より長い時間がかかる場合、解析、実行およびフェッチ・フェーズでそのSQL文によって費やされた時間などの詳細とともに、この操作の一部として実行されたすべてのSQL文のトレースを取得すると、パフォーマンス問題の原因を特定して解決するのに役立ちます。これを実現するには、自律型AIデータベースでSQLトレースを使用できます。
Autonomous AI Databaseでは、SQLトレースはデフォルトで無効になっています。SQLトレース・データの収集を開始するには、これを有効にする必要があります。SQLトレースを有効にして使用する詳細な手順は、Autonomous AI DatabaseでのSQLトレースの使用を参照してください。
オプティマイザ統計
Autonomous AI Databaseではオプティマイザ統計が自動的に収集されるため、このタスクを手動で実行する必要はなく、また、統計が常に最新であることを保証できます。自動統計収集はAutonomous AI Databaseで有効になっており、標準のメンテナンス・ウィンドウで実行されます。
ノート:
メンテナンス・ウィンドウの時間と自動オプティマイザ統計収集の詳細は、『Oracle Database 19c管理者ガイド』または『Oracle Database 26ai管理者ガイド』を参照してください
For more information on optimizer statistics see Oracle Database 19c SQL Tuning Guide or Oracle Database 26ai SQL Tuning Guide .
オプティマイザ・ヒント
オプティマイザ・ヒントは、オプティマイザに命令を渡すSQL文内の特別なコメントです。オプティマイザは、なんらかの状況により妨害されていないかぎり、ヒントを使用して文の実行計画を選択します。
PARALLEL
ヒントのAutonomous AI Databaseのデフォルトは、ワークロードによって異なります:
-
Autonomous AI Lakehouse:データ・ウェアハウスを使用したAutonomous AI Databaseは、デフォルトでSQL文のオプティマイザ・ヒントと
PARALLEL
ヒントを無視します。アプリケーションがヒントに依存している場合、オプティマイザ・ヒントを有効にするには、
ALTER SESSION
またはALTER SYSTEM
を使用して、セッション・レベルまたはシステム・レベルでパラメータOPTIMIZER_IGNORE_HINTS
をFALSE
に設定します。たとえば、次のコマンドは、セッションでヒントを有効にします:ALTER SESSION SET OPTIMIZER_IGNORE_HINTS=FALSE;
また、SQL文内の
PARALLEL
ヒントを有効にするには、ALTER SESSION
またはALTER SYSTEM
を使用して、セッション・レベルまたはシステム・レベルでOPTIMIZER_IGNORE_PARALLEL_HINTS
をFALSE
に設定します。たとえば、次のコマンドは、セッションでPARALLEL
ヒントを有効にします:ALTER SESSION SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
-
Autonomous AI Transaction Processing: Autonomous AI Databaseの表彰者オプティマイザ・ヒントおよびデフォルトでSQL文内の
PARALLEL
ヒント。オプティマイザ・ヒントを無効にするには、
ALTER SESSION
またはALTER SYSTEM
を使用して、セッション・レベルまたはシステム・レベルでパラメータOPTIMIZER_IGNORE_HINTS
をTRUE
に設定します。たとえば、次のコマンドは、セッションでヒントを無効にします:
ALTER SESSION SET OPTIMIZER_IGNORE_HINTS=TRUE;
また、SQL文内の
PARALLEL
ヒントを無効にするには、ALTER SESSION
またはALTER SYSTEM
を使用して、セッション・レベルまたはシステム・レベルでOPTIMIZER_IGNORE_PARALLEL_HINTS
をTRUE
に設定します。たとえば、次のコマンドは、セッションで
PARALLEL
ヒントを有効にします:ALTER SESSION SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;
自動索引付け
自動索引付けによって、Autonomous AI Databaseの索引管理タスクが自動的に自動化されます。自動索引付けは、Autonomous AI Databaseではデフォルトで無効になっています。
手動で索引を作成するには、データ・モデル、アプリケーションおよびデータの配布に関する詳しい知識が必要です。かつては、DBAがどの索引を作成するかの選択を担当していましたが、状況の変化に応じて、DBAが選択肢の改訂や索引のメンテナンスを行わない場合もありました。その結果、改善の機会が失われ、不要な索引の使用がパフォーマンスへの負担につながっていました。
Autonomous AI Databaseの自動索引付け機能では、アプリケーション・ワークロードがモニターされ、索引の作成とメンテナンスが自動的に行われます。
ヒント :
この手順を試してみる場合は、開発者およびデータ・ユーザー専用Oracle Autonomous AI Databaseワークショップのラボ14: 自動索引付けを実行します。- 自動索引付けを有効にするには、
DBMS_AUTO_INDEX.CONFIGURE
プロシージャを使用します。たとえば、次の文を実行すると、データベースの自動索引付けが有効になり、新しい自動索引がSQL文で使用できるように可視索引として作成されます。EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
- 自動タスクについてレポートし、自動索引付けプのリファレンスを設定するには、
DBMS_AUTO_INDEX
パッケージを使用します。ノート:
ノート: 自動索引が有効になっている場合、自動索引の索引圧縮はデフォルトで有効になります。
DBMS_AUTO_INDEX.CONFIGURE
プロシージャを使用します。たとえば、次の文を実行すると、データベースの自動索引付けが無効になり、新しい自動索引は作成されません。ただし、既存の自動索引は有効のまま変わりません。EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');
詳細は、『Oracle Database 19c管理者ガイド』または『Oracle Database 26ai管理者ガイド』の自動索引の管理に関する項を参照してください。
高速収集
高速収集では、データベースへの高頻度の単一行データ挿入の処理が最適化されます。高速収集では、データ挿入パフォーマンスを向上させるために、ディスク書込み前の挿入のバッファリングにラージ・プールが使用されます。
高速収集の目的は、集計に重要な値が含まれている多くの情報データを生成するが必ずしもすべてのACID保証が必要なわけではないアプリケーションをサポートすることです。Internet of Things (IoT)の多くのアプリケーションには、センサー・データ、スマート・メーター・データ、さらにはトラフィック・カメラなど、迅速な「消防および忘却」タイプのワークロードがあります。これらのアプリケーションでは、データは、収集され、その後の分析のために大量にデータベースに書き込まれる場合があります。
高速収集は、通常のOracle AI Databaseトランザクション処理とはまったく異なります。この処理では、データはログ記録され、データベースに一回書き込まれると(コミットすると)失われることがありません。最大限の収集処理能力を実現するために、通常のOracleトランザクション・メカニズムは無視されます。すべてのデータが実際にデータベースに書き込まれているかどうかは、そのアプリケーションで確認する必要があります。データがデータベースに書き込まれたかどうかを確認するために呼び出すことができる、特別なAPIが追加されました。
高速収集の概要およびこの機能の使用手順については、『Oracle Database 19cパフォーマンス・チューニング・ガイド』または『Oracle Database 26aiパフォーマンス・チューニング・ガイド』の高速収集の使用を参照してください。
-
オプティマイザによるヒントの使用の有効化: 必要に応じて、セッション・レベルまたはシステム・レベルで
optimizer_ignore_hints
パラメータをFALSE
に設定します。Autonomous AI Databaseワークロード・タイプに応じて、システム・レベルでデフォルトで
optimizer_ignore_hints
をFALSE
に設定できます。詳細は、「オプティマイザ統計」を参照してください。 - 高速収集のための表の作成:高速収集の対象となる表の制限については、『Oracle Database 19cパフォーマンス・チューニング・ガイド』または『Oracle Database 26aiパフォーマンス・チューニング・ガイド』を参照してください(指定した特性を持つ表は高速収集を使用できません)。
Oracle Schedulerでの事前定義済ジョブ・クラス
Autonomous AI Databaseには、Oracle Schedulerで使用する事前定義済のjob_class
値が含まれています。これらのジョブ・クラスを使用すると、共通の特性および動作を共有するジョブをより大きなエンティティにグループ化できるため、各クラスに割り当てられるリソースを制御することで、これらのクラス間で優先順位を付けることができます。
事前定義済ジョブ・クラスを使用すると、重要なジョブが優先され、ジョブの完了に必要なリソースを確保できます。たとえば、データ・ウェアハウスをロードする重要なプロジェクトの場合は、1つのクラスにすべてのデータ・ウェアハウス・ジョブを組み合せて、使用可能なリソースの割合を多く割り当てることによって、他のジョブより優先順位を付けることができます。また、ジョブ・クラス内のジョブに相対的な優先度を割り当てることもできます。
事前定義済のjob_class
値(TPURGENT
、TP
、HIGH
、MEDIUM
およびLOW
)は、対応するコンシューマ・グループにマップされます。これらのジョブ・クラスでは、ジョブが実行されるコンシューマ・グループをDBMS_SCHEDULER.CREATE_JOB
で指定できます。
DBMS_SCHEDULER.CREATE_JOB
プロシージャは、Autonomous AI Databaseのjob_type
パラメータのPLSQL_BLOCK
およびSTORED_PROCEDURE
ジョブ・タイプをサポートします。
たとえば、次を使用して、HIGH
コンシューマ・グループで実行する単一の通常ジョブを作成します:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'update_sales',
job_type => 'STORED_PROCEDURE',
job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
start_date => '28-APR-19 07.00.00 PM Australia/Sydney',
repeat_interval => 'FREQ=DAILY;INTERVAL=2',
end_date => '20-NOV-19 07.00.00 PM Australia/Sydney',
auto_drop => FALSE,
job_class => 'HIGH',
comments => 'My new job');
END;
/
Oracle Schedulerのノート:
-
DBMS_SCHEDULER.CREATE_JOB
を使用するには、特定のロールまたは権限の追加の付与が必要になる場合があります。ADMIN
ユーザーおよびDWROLE
を持つユーザーは、必要なCREATE SESSION
およびCREATE JOB
権限を持っています。ユーザーにDWROLE
がない場合は、CREATE SESSION
およびCREATE JOB
権限の付与が必要です。 -
Autonomous AI Databaseで実行されているOracle Schedulerジョブでは、
instance_id
ジョブ属性は無視されます。
Oracle SchedulerおよびDBMS_SCHEDULER.CREATE_JOB
の詳細は、「Oracle Database 19c」または「Oracle Database 26ai」の「Oracle Schedulerを使用したジョブのスケジュール」を参照してください。
ジョブ属性の詳細は、Oracle Database 19cのSET_ATTRIBUTEプロシージャまたはOracle Database 26aiを参照してください。
パフォーマンス監視およびチューニング・ツール
ツール | Details |
---|---|
パフォーマンス・ハブ |
Oracle Cloud Infrastructure (OCI)コンソールで使用可能な、すぐに使用できる機能豊富なツール。パフォーマンス・ハブには、Oracle Database ActionsおよびOracle Enterprise Managerも組み込まれています。 詳細は、パフォーマンス・ハブによるデータベース・パフォーマンスのモニターに関する項を参照してください。 |
Autonomous AI Databaseメトリック |
Autonomous AI Databaseのメトリックは、CPUとストレージの使用率、データベースのログインおよび接続試行の成功数、失敗した数、データベース操作、SQL問合せ、トランザクションなど、有用な定量データを測定するのに役立ちます。メトリック・データを使用すると、Autonomous AI Databaseリソースの問題を診断およびトラブルシューティングすることができます。 前提条件、使用状況、専用Exadataインフラストラクチャ上のAutonomous AI Databaseで使用可能なメトリックのリストなどの詳細は、Autonomous AI Databaseメトリックを使用したデータベースのモニターを参照してください。 |
自動ワークロード・リポジトリ(AWR)および自動データベース診断モニター(ADDM) |
これ以外によく使用される2つのツールは、自動ワークロード・リポジトリ(AWR)および自動データベース診断モニター(ADDM)です。 AWRには、Oracleデータベースのパフォーマンス関連統計が格納されます。ADDMは、AWRデータを定期的に分析し、パフォーマンスの問題の根本原因を特定し、問題を修正するための推奨事項を提供し、問題のないシステム領域を識別する診断ツールです。AWRは履歴パフォーマンス・データのリポジトリであるため、ADDMはイベント発生後のパフォーマンスの問題を分析でき、問題を再現する時間とリソースを節約できることがよくあります。 これらのツールの使用方法、およびデータベース・パフォーマンスの監視とチューニングの詳細は、『Oracle Database 19cパフォーマンス・チューニング・ガイド』または『Oracle Database 26aiパフォーマンス・チューニング・ガイド』を参照してください。 AWRおよびADDMは、パフォーマンス・ハブからも使用できます。詳細は、パフォーマンス・ハブによるデータベース・パフォーマンスのモニターに関する項を参照してください。 データベース・パフォーマンスのモニタリングおよびチューニングの簡単な概要については、『Oracle Database 19c 2日でのパフォーマンス・チューニング・ガイド』または『Oracle Database 26ai 2日でのパフォーマンス・チューニング・ガイド』を参照してください。 |