Autonomous AI Database on Dedicated Exadata InfrastructureのHigh Performanceの機能
この記事では、Autonomous AI Database on Dedicated Exadata Infrastructureの主なパフォーマンス・チューニング機能について説明します。
この項では、「お客様」という用語は、特定のタスクの実行を担当する組織内のユーザーを意味するために広く使用されています。場合によっては、これはアプリケーションDBAであり、その他の場合はアプリケーション開発者です。
Autonomous AI Databaseには、データベースのパフォーマンスを自動的に監視、分析および最適化する機能がいくつか含まれています。Oracle Autonomous AI DatabaseのSQLチューニングおよびパフォーマンス管理機能の完全なリストと、その使用方法の詳細は、Oracle Database 19c SQLチューニング・ガイドまたは『Oracle Database 26ai SQLチューニング・ガイド』を参照してください。
次に示すAutonomous AI Databaseの主なパフォーマンス・チューニング機能の幅広い分類を確認できます。
事前定義済データベース・サービス
アプリケーションからデータベースへの接続方法、およびデータベースへのSQLコールのコーディング方法によって、アプリケーションのトランザクション処理およびレポートの操作の全体的なパフォーマンスが決まります。
自律型AIデータベースに接続する場合、アプリケーションのデータベースとの対話のパフォーマンスは、接続先のデータベース・サービスによって異なります。Autonomous AI Databaseには、データベースへの接続時に使用するデータベース・サービスの複数のセットが用意されています。これらの接続サービスは、Autonomous AIデータベースの事前定義済データベース・サービス名の説明に従って、様々な種類のデータベース操作をサポートするように設計されています。
ヒント:事前定義済データベース・サービスの主な特性と、これらの特性に基づいて様々なデータベース・サービスのセットを比較する表を確認して、アプリケーションのパフォーマンス要件に適したデータベース・サービスを決定してください。
接続プール
Autonomous AI Databaseに接続する場合、接続プールを使用して、個々の接続を繰り返し作成および破棄するパフォーマンス・オーバーヘッドを削減できます。これは、アプリケーションのデータベースとの対話のパフォーマンスに大きな影響を与えるもう1つの要因です。
通常、継続的な可用性を提供するようにアプリケーションを設計または拡張する場合にのみ、接続プールの使用を検討します。ただし、ほぼすべてのトランザクション処理アプリケーションで、個々の接続ではなく接続プールを使用することはメリットになりえます。接続プールを使用すると、次のメリットがあります:
-
新しい接続オブジェクトの作成回数を減らします。
-
接続オブジェクトの再利用を促進します。
-
接続の取得プロセスを速めます。
-
接続の維持に費やされるリソース量を制御します。
-
接続オブジェクトを手動で管理するために必要なコーディングの労力を削減します。
特殊用途の接続機能
Oracle Net Services (以前の呼称はSQL*Net)には、特定の接続シナリオにおけるパフォーマンスを向上させる様々な接続機能が用意されています。これらの機能は、『Oracle Database 19c Net Services管理者ガイド』または『Oracle Database 26ai Net Services管理者ガイド』で説明されています。
-
コロケーション・タグ付けは、特定のトランザクション処理アプリケーションで役立つ、このような機能の1つです。アプリケーションが同じデータベース・サービスに繰り返し接続する場合、コロケーション・タグ付けを使用すると、そのようなすべての接続を、接続のデータベース側で通常実行されるロード・バランシング処理をバイパスして同じデータベース・インスタンスに転送できます。詳細は、Oracle Database 19cまたはOracle Database 26aiのクライアント接続のCOLOCATION_TAGに関する項を参照してください。
-
共有サーバー構成は、Autonomous AI Databaseが接続プーリングなしで設計されたレガシー・アプリケーションのメンテナンスをサポートするもう1つの機能です。共有サーバー・アーキテクチャを使用すると、データベース・サーバーは多数のクライアント・プロセスで非常に少ないサーバー・プロセスを共有することを許可できます。これにより、アプリケーションでサポートできるユーザー数が増加します。このようなレガシー・アプリケーションに共有サーバー・アーキテクチャを使用すると、アプリケーション自体を変更せずにスケール・アップできます。
Autonomous Container Database (ACD)のプロビジョニング中に共有サーバー接続を有効にでき、この設定はそれに作成されたすべてのデータベースに適用されます。手順については、Autonomous Container Serviceの作成を参照してください。
セッション多重化などの機能を含む共有サーバーの詳細は、『Oracle Database 19c Net Services管理者ガイド』または『Oracle Database 26ai Net Services管理者ガイド』も参照してください。
Autonomous Container Databaseで共有サーバー接続を有効にした後は、接続文字列を変更する必要はありません。デフォルト構成は「専用」に設定されています。
ノート:共有サーバー対応のAutonomous Container Databaseで作成された特定のAutonomous AIデータベースに対して共有サーバーを無効にすることはできません。また、共有サーバー対応のAutonomous Container Databaseで作成されたAutonomous AIデータベースに対して専用接続を使用することはできません。
SQLパフォーマンス・チューニング機能
優れたアプリケーションを作成する第一歩は、SQLを適切に記述することです。Oracle Autonomous AI Databaseには、高パフォーマンス・アプリケーションを構築して、SQLおよびPL/SQLコードを検証するための多数の機能が用意されています。これらの機能の一部を次に示します。
-
自動索引付け
-
オプティマイザの統計およびヒント
-
SQL計画のパフォーマンス低下の自動解決
-
ランナウェイSQL文の自動隔離
-
SQL計画管理
-
SQLチューニング・セット
-
SQLトレース
アプリケーションを開発する際、(自律型AIデータベースに組み込まれている) Oracle Database ActionsとOracle SQL Developer (ユーザーが開発システムにインストールした無料アプリケーション)の両方で提供されるSQLワークシートを使用して、記述したSQLコードがこれらの機能にどのような影響を与えるかをすぐに学習し、コードを改善することができます。
SQLトレース
アプリケーション操作に予想より時間がかかる場合、解析、実行およびフェッチ・フェーズでそのSQL文に費やされた時間などの詳細とともに、この操作の一部として実行されたすべてのSQL文のトレースを取得すると、パフォーマンスの問題の原因を特定して解決するのに役立ちます。これを実現するには、Autonomous AI DatabaseでSQLトレースを使用できます。
Autonomous AI Databaseでは、SQLトレースはデフォルトで無効になっています。SQLトレース・データの収集を開始するには、これを有効にする必要があります。SQLトレースを有効化および使用する方法の詳細は、「Autonomous AIデータベースでのSQLトレースの使用」を参照してください。
オプティマイザ統計
Autonomous AI Databaseではオプティマイザ統計が自動的に収集されるため、このタスクを手動で実行する必要はなく、統計が常に最新であることを保証できます。自動統計収集はAutonomous AI Databaseで有効になっており、標準のメンテナンス・ウィンドウで実行されます。
ノート:メンテナンス・ウィンドウの時間と自動オプティマイザ統計収集の詳細は、『Oracle Database 19c管理者ガイド』または『Oracle Database 26ai管理者ガイド』を参照してください。オプティマイザ統計の詳細は、『Oracle Database 19c SQLチューニング・ガイド』または『Oracle Database 26ai SQLチューニング・ガイド』を参照してください。
オプティマイザ・ヒント
オプティマイザ・ヒントは、オプティマイザに命令を渡すSQL文内の特別なコメントです。オプティマイザは、なんらかの状況により妨害されていないかぎり、ヒントを使用して文の実行計画を選択します。
オプティマイザのAutonomous AI DatabaseのデフォルトおよびPARALLELヒントは、ワークロードによって異なります:
-
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パフォーマンス・チューニング・ガイド』の高速収集の使用に関する項を参照してください。
Autonomous AI Databaseで高速収集を使用するには、次のことが必要です。
-
オプティマイザによるヒントの使用の有効化: 必要に応じて、セッション・レベルまたはシステム・レベルで
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 Schedulerを使用したジョブのスケジュール」または「Oracle Database 26ai」を参照してください。
ジョブ属性の詳細は、Oracle Database 19cのSET_ATTRIBUTEプロシージャまたはOracle Database 26aiを参照してください。
パフォーマンスの監視およびチューニング・ツール
ワークロードの変化、アプリケーション・サーバーやデータベース・サーバーでのリソース制限、または単になるネットワークのボトルネックなどのいくつかの状況では、アプリケーションのパフォーマンス問題が発生する可能性があります。Oracleには、パフォーマンスのモニター、パフォーマンス問題の診断、および問題解決のためのアプリケーションやデータベースのチューニングに役立つ様々なツールが用意されています。その一部を次に示します。
| ツール | Details |
|---|---|
| パフォーマンス・ハブ | Oracle Cloud Infrastructure (OCI)コンソールで使用可能な、すぐに使用可能な機能豊富なツール。パフォーマンス・ハブには、Oracle Database ActionsおよびOracle Enterprise Managerが組み込まれています。 詳細は、パフォーマンス・ハブを使用したデータベース・パフォーマンスのモニターを参照してください。 |
| Autonomous AI Databaseメトリック | Autonomous AI Database Metricsは、CPUおよびストレージの使用率、データベースのログインおよび接続試行の成功数、データベース操作、SQL問合せ、トランザクションなど、有用な定量データを測定するのに役立ちます。メトリック・データを使用して、Autonomous AI Databaseリソースの問題を診断およびトラブルシューティングできます。 前提条件、使用状況、専用Exadataインフラストラクチャ上のAutonomous AI Databaseで使用可能なメトリックのリストなどの詳細は、Autonomous AIデータベース・メトリックを使用したデータベースのモニターを参照してください。 |
| 自動ワークロード・リポジトリ(AWR)および自動データベース診断モニター(ADDM) | 他にも、自動ワークロード・リポジトリ(AWR)と自動データベース診断モニター(ADDM)の2つのツールがよく使用されます。 AWRには、Oracleデータベースのパフォーマンスに関連する統計が格納され、ADDMは、AWRデータの定期的な分析、パフォーマンス問題の根本原因を特定し、問題を修正するための推奨事項を提供し、問題のないシステム領域を特定する診断ツールです。AWRは履歴パフォーマンス・データのリポジトリであるため、ADDMはイベント後のパフォーマンスの問題を分析でき、多くの場合、問題の再現にかかる時間とリソースを節約できます。 これらのツールの使用方法、およびデータベース・パフォーマンスの監視とチューニングの詳細は、『Oracle Database 19cパフォーマンス・チューニング・ガイド』または『Oracle Database 26aiパフォーマンス・チューニング・ガイド』を参照してください。 AWRおよびADDMは、パフォーマンス・ハブからも入手できます。詳細は、パフォーマンス・ハブを使用したデータベース・パフォーマンスのモニターを参照してください。 データベースのパフォーマンス監視およびチューニングの概要は、『Oracle Database 19c 2日でパフォーマンス・チューニング・ガイド』または『Oracle Database 26ai 2日でパフォーマンス・チューニング・ガイド』を参照してください。 |