はじめに
1億行を超えるサンプルデータを作成し、Database Actionsのデータインサイトの機能が使えるか検証してみました。
本記事の前提条件
- ADBインスタンスが構成済みであること
- 下記リンクからMovie Sales 2020.csv(売上実績のサンプルデータ)をダウンロードし、対象のスキーマにロードしてあること(本記事ではQTEAM)
「OCIチュートリアル, Oracle Database編, 217: Database Actions を使ってみよう」
作業の大まかな流れ
- 上記サンプルデータを使って、1億行を超えるデータを複製する。
- Database Actionsにログインし、分析ビューを作成する。
- データインサイトを作成する。
実際に検証してみた
大規模データの作成
- TeraTermを起動し、Autonomous databaseに接続します。
- 新しい表(sampledata)を作成し、Movie Sales 2020表の中身を複製します。
CREATE TABLE sampledata AS SELECT * FROM Movie Sales 2020;
- この時点て、sampledata表の中身は52万行程あるので、以下のINSERT文を複数回行って、1億行を超えるサンプルデータを作成します。
INSERT INTO sampledata SELECT * FROM sampledata;
- 最後にコミットします。
commit;
これでサンプルデータができました。
分析ビューの作成
-
サンプルデータが入ったスキーマ(今回はQTEAM)でDatabase Actionsに接続し、Data Studio>データ分析を開きます。
-
分析ビュー作成画面から、階層およびメジャーの作成ボタンを押してしばらく待ち、完了したら、分析ビューの作成ボタンを押します。
データインサイトの作成
-
Database Actionsの起動パッドから、Data Studio>データインサイトを開きます。
-
スキーマ、対象の分析ビュー、列を指定したら検索を押します。
-
Autonomous Databaseの詳細画面にある「パフォーマンス・ハブ」のレポートから、AWRレポートを取得して詳しく見てみます。
-
AWRレポートのTime Model Staticticsを参照すると、sql execute elapsed timeが上位に来ており、実行時間が長いSQLがあることが分かります。
-
AWRレポートのSQL ordered by Elapsed Time を参照すると、に処理に時間がかかっているSQLがあることが分かります。
→SQL ID: dq9v46bqxckuv
SQL IDの中身は以下のようになっていました。DECLARE job BINARY_INTEGER := :job; next_date TIMESTAMP WITH TIME ZONE := :mydate; broken BOOLEAN := FALSE; job_name VARCHAR2(128) := :job_name; job_subname VARCHAR2(128) := :job_subname; job_owner VARCHAR2(128) := :job_owner; job_start TIMESTAMP WITH TIME ZONE := :job_start; job_scheduled_start TIMESTAMP WITH TIME ZONE := :job_scheduled_start; window_start TIMESTAMP WITH TIME ZONE := :window_start; window_end TIMESTAMP WITH TIME ZONE := :window_end; chain_id VARCHAR2(14) := :chainid; credential_owner VARCHAR2(128) := :credown; credential_name VARCHAR2(128) := :crednam; destination_owner VARCHAR2(128) := :destown; destination_name VARCHAR2(128) := :destnam; job_dest_id varchar2(14) := :jdestid; log_id number := :log_id; BEGIN DECLARE settings clob; BEGIN settings := '{"EXTRACTION":{"selectionRule":{"value":"MAX_DIFFERENCE"}, "fittedShareConvergence":{"value":"LAX"}, "maxNumExtractionDims":{"value":10000}, "insightValueType":{"value":"MEMBER"}, "excludeZero":{"value":"YES"}, "minXAxisCount":{"value":2}}, "sessionId":null, "applicationName":"INSIGHTS", "insightTypes":["FITTED_SHARE_COMPARISON"]}'; dbms_insight.generate_insights('REQUEST_INSIGHT_26', settings, 'REQUEST_INSIGHT_26', 'QTEAM'); END; :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF; END;
データインサイトの処理に長い時間かかっているということが考察できます。
まとめ
本記事では1億行を超えるデータを使って、Database Actionsにあるデータインサイトができるかを検証しました。