SQL Developerでは、TimesTen索引アドバイザをサポートしており、SQLワークロードを評価して索引を推奨します。TimesTen索引アドバイザの推奨する索引によって、次のパフォーマンスを向上させることができます: 結合、単独表スキャンおよびORDER BY
またはGROUP BY
の操作。TimesTen索引アドバイザでは、現行の接続またはデータベース全体の索引情報を収集できます。
注意: SQL Developerでは、プロシージャを使用して、TimesTen索引アドバイザから索引を推奨します。TimesTen索引アドバイザの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の「索引アドバイザを使用した索引の推奨」を参照してください。 |
TimesTen索引アドバイザを使用する前に次を確認します。
Oracle TimesTen In-Memory Databaseリリース11.2.2.4 (以上)を使用していること。
この章では、TimesTen索引アドバイザの使用方法について説明します。
内容は次のとおりです。
TimesTen索引アドバイザでデータを取得する前に、表の統計が過去24時間以内に更新されていることを確認してください。最新の表の統計によってデータ収集のための最新の統計が得られ、最適化された問合せ計画に基づく文を準備できます。表の統計の更新の詳細は、「問合せオプティマイザで使用される表および列の統計の更新」を参照してください。
接続レベルでTimesTen索引アドバイザ用データを取得する方法は2つあります。
SQL Developer SQLワークシートにより、接続レベルでTimesTen索引アドバイザ用データを取得できます。SQLワークシートが、SQL Developer SQLワークシート内にあることを確認してください。
SQLワークシートのメニューバーで、「TimesTen索引アドバイザ」ボタンをクリックします。
表の統計が期限切れの場合は、情報ダイアログに期限切れの表についての情報が表示されます。TimesTenによって表の統計の更新が推奨されます。
表の統計が更新されると、「索引アドバイザの構成」ダイアログが表示されます。
表の統計を更新するには、「取消」をクリックして「問合せオプティマイザで使用される表および列の統計の更新」のステップを実行します。表の統計を更新しないで続行するには、「OK」をクリックします。
「索引アドバイザの構成」ダイアログが表示されます。
「取得モード」ドロップダウン・リストで目的の取得モードを選択します。
SQLの準備: SQLワークシートでSQLコマンドが準備されますが、実行はされません。算出された統計および問合せ計画の分析に基づいて推奨が行われます。これがデフォルトの取得モードです。
SQLの実行: SQLワークシートでSQLコマンドが実行されます。実際のSQLコマンドの実行に基づいて推奨が行われます。このモードではSQLの実行を完了する必要があるため、「SQLの準備」モードよりも時間がかかります。
Oracle BIサーバーにオプティマイザ・ヒントを含めることを選択できます。
「Oracle BIサーバーのオプティマイザ・ヒントを含める」チェックボックスによって、問合せオプティマイザに特定の実行計画を生成するよう指示するオプティマイザ・ヒントを使用できます。オプティマイザ・ヒントは、Oracle BIサーバーの生成する推奨問合せです。オプティマイザ・ヒントの使用の詳細は、「Oracle BIサーバー用オプティマイザ・ヒントをSQLワークシートに含める」を参照してください。オプティマイザ・ヒントを使用しない場合は、「開始」をクリックします。
「索引アドバイザの構成」ダイアログが閉じます。SQLワークシートの下部に「TimesTen索引アドバイザ」ペインが表示されます。
「TimesTen索引アドバイザ」ペインの「セレクタ」列で、作成する索引推奨項目を選択します。
また、列のヘッダーをクリックすると、その列に基づいて表がソートされます。各列の説明は次のとおりです。
「セレクタ」
作成する索引推奨項目を決定するために選択するチェック・ボックス。
「索引推奨項目」
TimesTen索引アドバイザの推奨するCREATE INDEX
文。
「影響を受ける文の数」
推奨の効果を得られる文の数。
「作成済」
TimesTen索引アドバイザの推奨に基づく索引を作成済かどうかを示します。この値は、「はい」または「いいえ」です。「はい」の場合は、索引が正常に作成されています。値が「いいえ」の場合は、索引の作成中か、索引を作成することができません。
すべての索引推奨項目を選択するには、「すべて選択」チェック・ボックスを選択します。
TimesTen索引アドバイザに評価されているSQLコマンドを表示するには、「SQL」タブをクリックします。「SQL」タブは、「TimesTen索引アドバイザ」ペインの上部にあります。
作成する索引推奨項目を選択した後、「選択した索引を作成」ボタンをクリックします。
「選択した索引を作成」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
「詳細 >>」をクリックします。
選択した索引の作成の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「選択した索引を作成」ダイアログが閉じます。索引が作成されます。索引推奨項目を保存するには、「"SQLワークシートの索引推奨項目の保存」を参照してください。
トランザクション・レベルのオプティマイザ・ヒントを使用して、TimesTen問合せオプティマイザに特定の実行計画を生成するよう指示します。
注意: オプティマイザ・ヒントの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のオプティマイザ・ヒントを使用した実行計画の変更に関する項を参照してください。 |
トランザクション・レベルのオプティマイザ・ヒントを使用する前に、「SQLワークシート」のステップ4までを完了してください。オプティマイザ・ヒントを使用する場合は、DDL文をまったく使用しないか、SQLワークロードでAUTOCOMMIT
モードを有効にします。
Oracle BIサーバーのオプティマイザ・ヒントを使用するには、次のステップを実行します。
「Oracle BIサーバーのオプティマイザ・ヒントを含める」チェックボックスを選択します。
Oracle BIサーバーのオプティマイザ・ヒントありのフィールドは、「索引アドバイザの構成」ダイアログに表示されます。オプティマイザ・ヒントは編集できません。デフォルトでは、Oracle BIサーバーのオプティマイザ・ヒントは次のようになります。
-- -- Optimizer hints to be used with TimesTen Index Advisor for Oracle BI server -- autocommit 0; call ttoptsetflag('rowlock',0); call ttoptsetflag('tbllock',1); call ttoptsetflag('mergejoin',0); call ttoptsetflag('nestedloop',1);
ダイアログの右下にある「開始」ボタンを確認します。
「開始」をクリックします。
「索引アドバイザの構成」ダイアログが閉じます。SQLワークシートの下部に「TimesTen索引アドバイザ」ペインが表示されます。トランザクションのAUTOCOMMIT
モードは、TimesTen索引アドバイザを実行する以前にトランザクションが保持していたAUTOCOMMIT
モードに戻されます。
「TimesTen索引アドバイザ」ペインおよび索引の作成方法の詳細は、「SQLワークシート」の「「TimesTen索引アドバイザ」ペインの「セレクタ」列で作成する索引推奨項目を選択します。」を参照してください。
今後の参照のために索引推奨項目を保存するには、次のステップを実行します。
「索引を保存」をクリックします。すべての索引推奨項目が保存されます。索引推奨項目は個別に保存されません。
「索引を保存」ダイアログが表示されます。
TimesTen索引推奨項目を保存するディレクトリを選択します。
「ファイル名」フィールドに、TimesTen索引推奨項目のファイル名を定義します。
デフォルトのTimesTen索引推奨項目のファイル名は、接続名がconnection_name
の場合は、connection_name
-indexadvice-
YYYYMMDDMISS
.sql
です。YYYYMMDDHHMISS
は、推奨項目が作成された時点のタイムスタンプで、YYYY
は年、MM
は月、DD
は日、HH
は時、MI
は分、SS
は秒を表します。
「保存」をクリックします。
索引推奨項目が保存されます。
保存したファイルのヘッダーには、次の情報が含まれます。
TimesTenによってレポートが作成された時点のタイムスタンプ。
SQL Developerのバージョン。
TimesTenデータベースのバージョン。
TimesTen接続の名前。
次に例を示します。
-- This file was generated by SQL Developer at 2016-04-15 15:54:56 -- SQL Developer version 4.2.0.16.099.1111 -- Database version: 11.02.02.0008 Oracle TimesTen IMDB version 11.2.2.8.0 -- Connection name: sampledb_1211
SQLワークロード・スクリプト・ファイルのSQL問合せを使用して、接続レベルでTimesTen索引アドバイザ用データを取得できます。SQL Developerのメイン・ページを開き、TimesTen接続が展開されていることを確認します。
データベースの名前を右クリックして、「索引アドバイザ」を選択し、次に「接続レベル取得」を選択します。
表の統計が期限切れの場合は、情報ダイアログに期限切れの表についての情報が表示されます。TimesTenによって表の統計の更新が推奨されます。
表の統計が更新されると、「索引アドバイザの構成」ダイアログが表示されます。
表の統計を更新するには、「取消」をクリックして「問合せオプティマイザで使用される表および列の統計の更新」のステップを実行します。表の統計を更新しないで続行するには、「OK」をクリックします。
「索引アドバイザ - 接続レベル取得」ダイアログが表示されます。
「索引アドバイザ - 接続レベル取得」ダイアログ・ボックスの「構成」タブで、「取得モード」ドロップダウン・リストから目的の取得モードを選択します。
SQLの準備: ワークロード・スクリプトでSQLコマンドが準備されますが、実行はされません。算出された統計および問合せ計画の分析に基づいて推奨が行われます。これがデフォルトの取得モードです。
SQLの実行: ワークロード・シートでSQLコマンドが実行されます。実際のワークロード・スクリプトの実行に基づいて推奨が行われます。このモードではSQLの実行を完了する必要があるため、「SQLの準備」モードよりも時間がかかります。
SQLワークロード・スクリプトを指定する準備ができました。SQL DeveloperによってttIsql
ユーティリティが使用され、SQLワークロード・スクリプトが実行されます。「ワークロード・スクリプト」フィールドの右側にある「参照」ボタンを確認します。
「参照」をクリックします。
「開く」ダイアログが表示されます。
SQLワークロード・スクリプトを保存したディレクトリを選択します。
索引推奨項目を生成するSQLワークロード・スクリプトを選択します。
「開く」をクリックします。
SQL ワークロード用データを収集する準備ができました。「開始」ボタンを確認します。
TimesTen索引アドバイザに評価されているSQLコマンドを表示するには、「SQL」タブをクリックします。「SQL」タブは、「索引アドバイザ - 接続レベル取得」ダイアログの上部にあります。
「Oracle BIサーバーのオプティマイザ・ヒントを含める」チェックボックスによって、問合せオプティマイザに特定の実行計画を生成するよう指示するオプティマイザ・ヒントを使用できます。オプティマイザ・ヒントは、Oracle BIサーバーの生成する推奨問合せです。オプティマイザ・ヒントの使用の詳細は、「Oracle BIサーバーのオプティマイザ・ヒントをSQLワークロード・スクリプトに含める」を参照してください。オプティマイザ・ヒントを使用しない場合は、「開始」をクリックします。
「索引アドバイザ・アシスタントの進捗状況」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
TimesTen索引アドバイザに推奨項目がない場合は、「索引推奨項目のフィードバック」ダイアログが表示されます。ダイアログを閉じて、SQL Developerのメイン・ページに戻ります。
「詳細 >>」をクリックします。
索引アドバイザの接続レベル取得の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「索引アドバイザ・アシスタントの進捗状況」ダイアログが閉じます。「索引推奨項目」タブを確認します。
「索引推奨項目」タブをクリックします。
「索引アドバイザ - 接続レベル取得」ダイアログの「索引推奨項目」タブが表示されます。
「セレクタ」列で、作成する索引推奨項目を選択します。
また、列のヘッダーをクリックすると、その列に基づいて表がソートされます。各列の説明は次のとおりです。
「セレクタ」
作成する索引推奨項目を決定するために選択するチェック・ボックス。
「索引推奨項目」
TimesTen索引アドバイザの推奨するCREATE INDEX
文。
「影響を受ける文の数」
推奨の効果を得られる文の数。
「作成済」
TimesTen索引アドバイザの推奨に基づく索引を作成済かどうかを示します。この値は、「はい」または「いいえ」です。「はい」の場合は、索引が正常に作成されています。値が「いいえ」の場合は、索引の作成中か、索引を作成することができません。
すべての索引推奨項目を選択するには、「すべて選択」チェック・ボックスを選択します。
適用する索引推奨項目を選択した後、「選択した索引を作成」ボタンをクリックします。
「選択した索引を作成しています」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
「詳細 >>」をクリックします。
選択した索引の作成の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「選択した索引を作成しています」ダイアログが閉じます。索引が作成されました。索引推奨項目を保存するには、「"索引推奨項目の保存」を参照してください。
トランザクション・レベルのオプティマイザ・ヒントを使用して、TimesTen問合せオプティマイザに特定の実行計画を生成するよう指示します。
注意: トランザクション・レベルのオプティマイザ・ヒントの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のオプティマイザ・ヒントを使用した実行計画の変更に関する項を参照してください。 |
トランザクション・レベルのオプティマイザ・ヒントを使用する前に、「SQLワークロード・スクリプト」のステップ8までを完了してください。オプティマイザ・ヒントを使用する場合は、DDL文をまったく使用しないか、SQLワークロードでAUTOCOMMIT
モードを有効にします。
Oracle BIサーバーのオプティマイザ・ヒントを使用するには、次のステップを実行します。
「Oracle BIサーバーのオプティマイザ・ヒントを含める」チェックボックスを選択します。
Oracle BIサーバーのオプティマイザ・ヒントありのフィールドは、「索引アドバイザ - 接続レベル取得」ダイアログに表示されます。オプティマイザ・ヒントは編集できません。デフォルトでは、Oracle BIサーバーのオプティマイザ・ヒントは次のようになります。
-- -- Optimizer hints to be used with TimesTen Index Advisor for Oracle BI server -- autocommit 0; call ttoptsetflag('rowlock',0); call ttoptsetflag('tbllock',1); call ttoptsetflag('mergejoin',0); call ttoptsetflag('nestedloop',1);
ダイアログの右下にある「開始」ボタンを確認します。
「開始」をクリックします。
「索引アドバイザ・アシスタントの進捗状況」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
「詳細 >>」をクリックします。
索引アドバイザの接続レベル取得の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「索引アドバイザ・アシスタントの進捗状況」ダイアログが閉じます。「索引推奨項目」タブを確認します。
「索引推奨項目」タブをクリックします。
「索引アドバイザ - 接続レベル取得」ダイアログの「索引推奨項目」タブが表示されます。
「セレクタ」列で、作成する索引推奨項目を選択します。
また、列のヘッダーをクリックすると、その列に基づいて表がソートされます。各列の説明は次のとおりです。
「セレクタ」
作成する索引推奨項目を決定するために選択するチェック・ボックス。
「索引推奨項目」
TimesTen索引アドバイザの推奨するCREATE INDEX
文。
「影響を受ける文の数」
推奨の効果を得られる文の数。
「作成済」
索引推奨項目を作成済かどうかを示します。この値は、「はい」または「いいえ」です。
すべての索引推奨項目を選択するには、「すべて選択」チェック・ボックスを選択します。
適用する索引推奨項目を選択した後、「選択した索引を作成」ボタンをクリックします。
「選択した索引を作成しています」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
「詳細 >>」をクリックします。
選択した索引の作成の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「選択した索引を作成しています」ダイアログが閉じます。索引が作成されました。トランザクションのAUTOCOMMIT
モードは、TimesTen索引アドバイザを実行する以前にトランザクションが保持していたAUTOCOMMIT
モードに戻されます。索引推奨項目を保存するには、「"索引推奨項目の保存」を参照してください。
TimesTen索引アドバイザでデータを取得する前に、表の統計が過去24時間以内に更新されていることを確認してください。最新の表の統計によってデータ収集のための最新の統計が得られ、最適化された問合せ計画に基づく文を準備できます。表の統計の更新の詳細は、「問合せオプティマイザで使用される表および列の統計の更新」を参照してください。
また、TimesTen接続ユーザーにADMIN
権限を付与していることも確認してください。GRANT
SQL文の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のGRANTに関する項を参照してください。
データベース・レベルでTimesTen索引アドバイザ用のデータを収集するには、SQL Developerのメイン・ページを開き、TimesTen接続が展開されていることを確認します。
データベースの名前を右クリックして、「索引アドバイザ」を選択し、次に「データベース・レベル取得」を選択します。
表の統計が期限切れの場合は、情報ダイアログに期限切れの表についての情報が表示されます。表の統計を最新の状態に更新することをお薦めします。
表の統計が更新されると、「索引アドバイザ - 接続レベル取得」ダイアログが表示されます。
表の統計を更新するには、「取消」をクリックして「問合せオプティマイザで使用される表および列の統計の更新」のステップを実行します。表の統計を更新しないで続行するには、「OK」をクリックします。
「索引アドバイザ - データベース取得」ダイアログが表示されます。ダイアログの下にある「開始」ボタンを確認します。
「索引アドバイザ - 接続レベル取得」ダイアログの「制御」タブで、「開始」をクリックします。
「索引アドバイザによるデータベース取得が進行中」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
「詳細 >>」をクリックします。
索引アドバイザのデータベース・レベルの取得の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「索引アドバイザによるデータベース取得が進行中」ダイアログが閉じます。
目的のSQLワークロードを取得したら、「停止」をクリックします。
TimesTen索引アドバイザに推奨項目がある場合は、「索引アドバイザによるデータベース取得が進行中」ダイアログが表示されます。
TimesTen索引アドバイザに推奨項目がない場合は、「索引推奨項目のフィードバック」ダイアログが表示されます。ダイアログを閉じて、SQL Developerのメイン・ページに戻ります。
「詳細 >>」をクリックします。
索引アドバイザのデータベース取得の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「索引アドバイザによるデータベース取得が進行中」ダイアログが閉じます。「索引アドバイザ - データベース取得」ダイアログに、完了したデータベース取得についての情報が表示されます。ダイアログの上にある「索引推奨項目」タブを確認します。
「索引推奨項目」タブをクリックします。
「索引アドバイザ - データベース取得」ダイアログの「索引推奨項目」タブが表示されます。
「セレクタ」列で、作成する索引推奨項目を選択します。
また、列のヘッダーをクリックすると、その列に基づいて表がソートされます。各列の説明は次のとおりです。
「セレクタ」
作成する索引推奨項目を決定するために選択するチェック・ボックス。
「索引推奨項目」
TimesTen索引アドバイザの推奨するCREATE INDEX
文。
「影響を受ける文の数」
推奨の効果を得られる文の数。
「作成済」
索引推奨項目を作成済かどうかを示します。この値は、「はい」または「いいえ」です。
すべての索引推奨項目を選択するには、「すべて選択」チェック・ボックスを選択します。
適用する索引推奨項目を選択した後、「選択した索引を作成」ボタンをクリックします。
「選択した索引を作成しています」ダイアログが表示されます。「詳細 >>」ボタンを確認します。
「詳細 >>」をクリックします。
選択した索引の作成の進捗情報を表示する詳細ペインが開きます。ダイアログの下にある「閉じる」ボタンを確認します。
「閉じる」をクリックします。
「選択した索引を作成しています」ダイアログが閉じます。索引が作成されました。索引推奨項目を保存するには、「"索引推奨項目の保存」を参照してください。
次のステップは、今後の参照のために検索推奨項目を保存する方法を説明しています。このステップは、データベース・レベルでの取得ではデータベースレベルでの取得、接続レベルでの取得ではSQLワークロード・スクリプトで有効です。
「索引を保存」をクリックします。デフォルトで、すべての索引推奨項目は保存されます。索引推奨項目は個別に保存できません。
「索引を保存」ダイアログが表示されます。
TimesTen索引推奨項目を保存するディレクトリを選択します。
「ファイル名」フィールドに、TimesTen索引推奨項目のファイル名を定義します。
デフォルトのTimesTen索引推奨項目のファイル名は、接続名がconnection_name
の場合は、connection_name
-indexadvice-
YYYYMMDDMISS
.sql
です。YYYYMMDDHHMISS
は、推奨項目が作成された時点のタイムスタンプで、YYYY
は年、MM
は月、DD
は日、HH
は時、MI
は分、SS
は秒を表します。
「保存」をクリックします。
索引推奨項目は保存されます。
保存したファイルには、次の情報を持つヘッダーが含まれます。
レポートが作成された時点のタイムスタンプ。
SQL Developerのバージョン。
TimesTenデータベースのバージョン。
TimesTen接続の名前。
次に例を示します。
-- This file was generated by SQL Developer at 2016-04-18 15:54:56 -- SQL Developer version 4.2.0.16.099.1111 -- Database version: 11.02.02.0008 Oracle TimesTen IMDB version 11.2.2.8.0 -- Connection name: sampledb_1211
TimesTen索引アドバイザの取得状況によって、接続レベルおよびデータベースレベルの取得状況が表示できます。TimesTen索引アドバイザによるデータベースの取得状況を表示するには、SQL Developerのメイン・ページを開いている必要があります。
データベースの名前を右クリックして、「索引アドバイザ」を選択し、次に「索引アドバイザの取得状態」を選択します。
「索引アドバイザの取得状態」ダイアログが表示され、接続レベルおよびデータベース・レベルの現在の取得状況が詐称できます。
また、列のヘッダーをクリックすると、その列に基づいて表がソートされます。各列の説明は次のとおりです。
接続ID
TimesTen索引アドバイザによる取得を開始した接続の接続ID。
取得レベル
TimesTen索引アドバイザの取得レベル。この値は、「接続」または「データベース」です。
取得モード
TimesTen索引アドバイザの取得モード。この値は、「SQLの実行」または「SQLの準備」です。
取得状態
TimesTen索引アドバイザの取得状態。この値は、「進行中」または「完了」です。
準備済数
取得期間に準備済のSQL文の数。
実行数
取得期間に実行済のSQL文の数。
開始時間
索引アドバイザによる取得が開始した時点のタイムスタンプ。タイムスタンプの書式は、YYYY
-
MM
-
DD
HH
:
MI
:
SS
.
FF
であり、YYYY
は年、MM
は月、DD
は日、HH
は時、MI
は分、SS
は秒で、FF
がミリ秒です。
終了時間
索引アドバイザによる取得が終了した時点のタイムスタンプ。タイムスタンプの書式は、YYYY
-
MM
-
DD
HH
:
MI
:
SS
.
FF
であり、YYYY
は年、MM
は月、DD
は日、HH
は時、MI
は分、SS
は秒で、FF
がミリ秒です。「取得状態」が、「進行中」の場合、この値は空です。
TimesTen索引アドバイザの取得した最新の情報で表を更新するには、「リフレッシュ」をクリックします。
「索引アドバイザの取得状態」ダイアログが、最新の取得状況の情報でリフレッシュされます。