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プランのベースラインを比較しています。
次の画像は、SQLプランのベースラインアーキテクチャを示しています。
画像ソース:https://ittutorial.org/sql-plan-management-using-sql-plan-baselines-in-oracle-oracle-database-performance-tuning-tutorial-14/)
SQLプランのベースラインを読み込む
次の画像は、SQLプランのベースラインをロードする2つの方法を示しています。
画像ソース: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
に設定します 次の例に示すように:
2番目の方法では、 DBMS_SPMを使用できます。 SQLプランのベースラインを手動で管理できるようにするパッケージ。次の例に示すように、SQLチューニングセットからプランをロードします。
次のコマンドを使用して、計画ベースラインを手動でロードします。
SQLプランのベースラインの使用状況を確認する
SQLプランのベースラインをロードした後、SQLを実行して、オプティマイザーがSQLプランのベースラインを使用しているかどうかを確認する必要があります。次のようにSQL_TEXTとプラン名を使用して、SQLプランのベースラインをクエリできます。
SQLプランのベースラインを表示する
次のクエリを実行して、SQLプランのベースラインを表示します。
SQLプランのベースラインを削除します
SQLプランのベースラインを削除するには、次のクエリを実行して、オプティマイザが使用しているSQLプランを確認します。
次に、プランを使用した後、次のコマンドを実行してベースラインを削除します。
OracleSQLプロファイル
Oracle Enterprise Manager(OEM)またはコマンドラインクエリを使用してトリガーするSQLチューニングアドバイザは、SQLステートメントのSQLプロファイルを生成できます。このプロファイルには、ステートメントに関する追加情報が含まれています。
この例では、最初にsql_idに対してSQLチューニングアドバイザを実行してから、SQLプロファイルで操作を実行します。
1。 SQLチューニングアドバイザーを実行する
sql_id、6dkrnbx1zdwy38
に対して次のSQLチューニングアドバイザコードを実行します :
次のDBMS_SQLTUNE.report_tuning_taskを実行します 推奨事項:
2。 sql_profileを受け入れます
次のコードを実行して、sql_profileを受け入れます。
3。 sql_profileの名前を確認してください
次のクエリを使用して、sql_profile名を確認します。
4。 sql_profileを無効にします
次のコードを実行して、sql_profileを無効にします。
有効にするには、値をDISABLED
から変更します ENABLED
へ 。
5。 sql_profileを削除します
次のコードを実行して、sql_profileを削除します。
SQLステートメントを実行すると、オプティマイザーは実行プランを作成してクエリを解析し、ハードディスクからデータを取得してメモリに配置します。SQLプロファイルとベースラインにより、オプティマイザーは時間とCPUの観点から最もコストのかからないプランを選択できます。料金。優れたSQLプランは、クエリを効率的に実行し、目的の結果をより速く提供します。
データベースサービスの詳細をご覧ください。
コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。
-
MicrosoftAzureおよびOracleCloudInfrastructureでアプリケーションを実行する
Microsoft®とOracle®は協力して、お客様がOracle E-BusinessSuite®、JDEdwards®EnterpriseOne、PeopleSoft®などのOracleアプリケーションをクラウドにデプロイできるようにしました。 はじめに Azure™ExpressRoute®とOracleFastConnectの間の直接相互接続を使用して、アプリケーションとデータベースレイヤーの間に高帯域幅、プライベート、および低レイテンシの接続を確立できます。この接続により、AzureインフラストラクチャでOracleアプリケーションを実行し、Oracle Cloud Infras
-
AutonomousDatabaseDedicatedおよびExadataクラウドインフラストラクチャ
この投稿では、Oracle®AutonomousDatabaseDedicatedおよびExadata®クラウドインフラストラクチャに関するさまざまなソースからの情報を紹介します。 はじめに Oracle Autonomous Databaseの技術概要によると、「Oracle Autonomous Databaseは、クラウドの柔軟性と機械学習の能力を組み合わせて、データ管理をサービスとして提供します。」このドキュメントは後で追加します。「OracleAutonomousデータベースには、OracleExadataおよびExadataCloud Serviceにある製品のフルセットが含まれ