専用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に接続する場合、アプリケーションとデータベースとの対話のパフォーマンスは、接続先のデータベース・サービスによって異なります。Autonomous AI Databaseには、データベースへの接続時に使用するデータベース・サービスの複数のセットが用意されています。これらの接続サービスは、Autonomous AI Databaseの事前定義済データベース・サービス名で説明されているように、様々な種類のデータベース操作をサポートするように設計されています。

ヒント :

事前定義済データベース・サービスの主な特性と、これらの特性に基づいて様々なデータベース・サービスのセットを比較する表を確認し、アプリケーションのパフォーマンス要件に適したデータベース・サービスを決定してください。

接続プール

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 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_HINTSFALSEに設定します。

    たとえば、次のコマンドは、セッションでヒントを有効にします:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=FALSE;

    また、SQL文内のPARALLELヒントを有効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルまたはシステム・レベルでOPTIMIZER_IGNORE_PARALLEL_HINTSFALSEに設定します。

    たとえば、次のコマンドは、セッションでPARALLELヒントを有効にします:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
  • Autonomous AI Transaction Processing: Autonomous AI Database表彰者オプティマイザ・ヒントおよびデフォルトでSQL文内のPARALLELヒント。

    オプティマイザ・ヒントを無効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルまたはシステム・レベルでパラメータOPTIMIZER_IGNORE_HINTSTRUEに設定します。

    たとえば、次のコマンドは、セッションでヒントを無効にします:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=TRUE;

    また、SQL文内のPARALLELヒントを無効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルまたはシステム・レベルでOPTIMIZER_IGNORE_PARALLEL_HINTSTRUEに設定します。

    たとえば、次のコマンドは、セッションで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で高速収集を使用するには、次のことが必要です:

Oracle Schedulerでの事前定義済ジョブ・クラス

Autonomous AI Databaseには、Oracle Schedulerで使用する事前定義済のjob_class値が含まれています。これらのジョブ・クラスを使用すると、共通の特性および動作を共有するジョブをより大きなエンティティにグループ化できるため、各クラスに割り当てられるリソースを制御することで、これらのクラス間で優先順位を付けることができます。

事前定義済ジョブ・クラスを使用すると、重要なジョブが優先され、ジョブの完了に必要なリソースを確保できます。たとえば、データ・ウェアハウスをロードする重要なプロジェクトの場合は、1つのクラスにすべてのデータ・ウェアハウス・ジョブを組み合せて、使用可能なリソースの割合を多く割り当てることによって、他のジョブより優先順位を付けることができます。また、ジョブ・クラス内のジョブに相対的な優先度を割り当てることもできます。

事前定義済のjob_class値(TPURGENTTPHIGHMEDIUMおよびLOW)は、対応するコンシューマ・グループにマップされます。これらのジョブ・クラスでは、ジョブが実行されるコンシューマ・グループをDBMS_SCHEDULER.CREATE_JOBで指定できます。

DBMS_SCHEDULER.CREATE_JOBプロシージャは、Autonomous AI Databasejob_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 19cSET_ATTRIBUTEプロシージャまたはOracle Database 26aiを参照してください。

パフォーマンス監視およびチューニング・ツール

ワークロードの変更、アプリケーション・サーバーやデータベース・サーバーでのリソース制限、単なるネットワーク・ボトルネックなどのいくつかの状況では、アプリケーションのパフォーマンスの問題が発生する可能性があります。Oracleには、パフォーマンスのモニター、パフォーマンス問題の診断、および問題解決のためのアプリケーションやデータベースのチューニングに役立つ様々なツールが用意されています。その一部を次に示します。
ツール 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日でのパフォーマンス・チューニング・ガイド』を参照してください。