データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

OracleSQLプロファイルとベースライン

この投稿では、SQLプロファイルとOracle®のベースラインの違いに焦点を当て、クエリを調整するときにどのように機能するかを説明します。

オプティマイザー、プロファイル、およびベースライン

大まかに言うと、これら3つの要素は次のように連携して機能します。

  • クエリオプティマイザは、システム統計、バインド変数、コンパイルなどの情報を使用して、クエリ実行の最適なプランを取得します。ただし、入力の欠陥が最適ではない計画につながる場合があります。

  • SQLプロファイルには、この問題を軽減する補助情報が含まれています。SQLプロファイルは、これらの間違いを最小限に抑え、オプティマイザーが最適なプランを選択するのに役立ちます。

  • SQLステートメントのSQL計画ベースラインは、受け入れられた計画のセットで構成されます。ステートメントを解析した後、オプティマイザーは、承認されたプランのセットから最適なプランを選択します。コストオプティマイザが別の適切なプランを見つけると、プラン履歴に新しいプランが追加されます。ただし、オプティマイザーは、現在受け入れられているプラ​​ンよりもパフォーマンスが優れていることを確認するまで、新しいプランを使用しません。

このように考えてください:SQLプロファイルはオプティマイザーに情報を提供して最適なプランを選択するのに役立ちますが、オプティマイザーに特定のプランを選択させることはありません。SQLプランのベースラインは、オプティマイザープランの選択を受け入れられたプランのセットに制限します。コストベースの計画を検討し、承認された計画のベースラインセットに含めます。

オプティマイザーで最小コストのプランを使用し、最新の統計を使用する必要がある場合は、SQLプロファイルを使用してください。特定の計画セットの1つを使用する場合は、ベースラインを使用します。 SQL計画のベースラインが、承認されたセットから最適な計画を取得できない場合は、代わりにSQLプロファイルを使用してください。

SQL計画管理

SQL計画管理(SPM)には、次のコンポーネントがあります。

  • 計画のキャプチャ
  • プランの選択
  • 計画の進化
SPMプランのキャプチャ

ステートメントを実行すると、システムはそれをハード解析し、使用可能なSQLプロファイルに従ってコストプランを生成します。コストベースのプランを選択した後、SQLプランのベースラインで使用可能なプランを比較します。コストベースで生成されたプランが承認されたプランの1つと一致する場合は、そのプランを使用できます。計画が一致しない場合、システムはそれを未承認の計画として計画ベースラインに追加します。

SPMプランの選択

ベースラインプランを使用してSQLステートメントを実行すると、そのSQLの最適なプランが選択されます。オプティマイザは同じプロセスを使用します。使用可能なSQLプロファイルは、各プランの推定コストにも影響し、それに応じてプランを選択します。

SPMプランの進化

SPMの最後のコンポーネントは、受け入れられなかった計画の進化です。これは、受け入れられた計画に対して受け入れられなかった計画をテストします。このプロセスでは、クエリにかかる時間と必要なCPUリソースを考慮して、最適な計画を評価します。クエリのコストに応じて最適なプランを受け入れます。 SQLプロファイルが利用可能な場合、それは推定コストに影響します。

プロファイルとベースラインの比較

次の表は、https://www.cnblogs.com/princessd8251/articles/3637461.htmlから、SQLプロファイルとSQLプランのベースラインを比較しています。

OracleSQLプロファイルとベースライン
アーキテクチャ

次の画像は、SQLプランのベースラインアーキテクチャを示しています。

OracleSQLプロファイルとベースライン

画像ソース:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/)


SQLプランのベースラインを読み込む

次の画像は、SQLプランのベースラインをロードする2つの方法を示しています。

OracleSQLプロファイルとベースライン

画像ソース:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/


最初の方法では、 OPTIMIZER_CAPTURE_SQL_PLAN_BASELINESを設定できます。 TRUEへの初期化パラメータ 自動計画キャプチャを使用します。この初期化パラメータはFALSEです デフォルトでは、TRUEに設定します 次の例に示すように:

OracleSQLプロファイルとベースライン

2番目の方法では、 DBMS_SPMを使用できます。 SQLプランのベースラインを手動で管理できるようにするパッケージ。次の例に示すように、SQLチューニングセットからプランをロードします。

OracleSQLプロファイルとベースライン
SQLプランのベースラインを手動でロードする

次のコマンドを使用して、計画ベースラインを手動でロードします。

OracleSQLプロファイルとベースライン

SQLプランのベースラインの使用状況を確認する

SQLプランのベースラインをロードした後、SQLを実行して、オプティマイザーがSQLプランのベースラインを使用しているかどうかを確認する必要があります。次のようにSQL_TEXTとプラン名を使用して、SQLプランのベースラインをクエリできます。

OracleSQLプロファイルとベースライン

SQLプランのベースラインを表示する

次のクエリを実行して、SQLプランのベースラインを表示します。

OracleSQLプロファイルとベースライン

SQLプランのベースラインを削除します

SQLプランのベースラインを削除するには、次のクエリを実行して、オプティマイザが使用しているSQLプランを確認します。

OracleSQLプロファイルとベースライン

次に、プランを使用した後、次のコマンドを実行してベースラインを削除します。

OracleSQLプロファイルとベースライン

OracleSQLプロファイル

Oracle Enterprise Manager(OEM)またはコマンドラインクエリを使用してトリガーするSQLチューニングアドバイザは、SQLステートメントのSQLプロファイルを生成できます。このプロファイルには、ステートメントに関する追加情報が含まれています。

この例では、最初にsql_idに対してSQLチューニングアドバイザを実行してから、SQLプロファイルで操作を実行します。

1。 SQLチューニングアドバイザーを実行する

sql_id、6dkrnbx1zdwy38に対して次のSQLチューニングアドバイザコードを実行します :

OracleSQLプロファイルとベースライン OracleSQLプロファイルとベースライン

次のDBMS_SQLTUNE.report_tuning_taskを実行します 推奨事項:

OracleSQLプロファイルとベースライン

2。 sql_profileを受け入れます

次のコードを実行して、sql_profileを受け入れます。

OracleSQLプロファイルとベースライン

3。 sql_profileの名前を確認してください

次のクエリを使用して、sql_profile名を確認します。

OracleSQLプロファイルとベースライン

4。 sql_profileを無効にします

次のコードを実行して、sql_profileを無効にします。

OracleSQLプロファイルとベースライン

有効にするには、値をDISABLEDから変更します ENABLEDへ 。

5。 sql_profileを削除します

次のコードを実行して、sql_profileを削除します。

OracleSQLプロファイルとベースライン
結論

SQLステートメントを実行すると、オプティマイザーは実行プランを作成してクエリを解析し、ハードディスクからデータを取得してメモリに配置します。SQLプロファイルとベースラインにより、オプティマイザーは時間とCPUの観点から最もコストのかからないプランを選択できます。料金。優れたSQLプランは、クエリを効率的に実行し、目的の結果をより速く提供します。

データベースサービスの詳細をご覧ください。

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


  1. MicrosoftAzureおよびOracleCloudInfrastructureでアプリケーションを実行する

    Microsoft®とOracle®は協力して、お客様がOracle E-BusinessSuite®、JDEdwards®EnterpriseOne、PeopleSoft®などのOracleアプリケーションをクラウドにデプロイできるようにしました。 はじめに Azure™ExpressRoute®とOracleFastConnectの間の直接相互接続を使用して、アプリケーションとデータベースレイヤーの間に高帯域幅、プライベート、および低レイテンシの接続を確立できます。この接続により、AzureインフラストラクチャでOracleアプリケーションを実行し、Oracle Cloud Infras

  2. AutonomousDatabaseDedicatedおよびExadataクラウドインフラストラクチャ

    この投稿では、Oracle®AutonomousDatabaseDedicatedおよびExadata®クラウドインフラストラクチャに関するさまざまなソースからの情報を紹介します。 はじめに Oracle Autonomous Databaseの技術概要によると、「Oracle Autonomous Databaseは、クラウドの柔軟性と機械学習の能力を組み合わせて、データ管理をサービスとして提供します。」このドキュメントは後で追加します。「OracleAutonomousデータベースには、OracleExadataおよびExadataCloud Serviceにある製品のフルセットが含まれ