vsql を使用しているときに、クエリが完了してから実行にかかった時間を確認したいと考えています。たとえば、私が実行すると:
select count(distinct key) from schema.table;
私は次のような出力を見たいです:
5678 (1行) 合計クエリ時間: 55 秒。
これが不可能な場合、クエリ時間を測定する別の方法はありますか?
タイプvsql
:
\timing
Enterキーを押します。あなたはあなたが見るものを好きになるでしょう:-)
それを繰り返すと消えます。
あなたの質問の他の部分について:
クエリ時間を測定する別の方法はありますか?
Vertica は、クラスターで実行されたすべてのクエリの履歴をログに記録できます。これは、クエリ時間のもう 1 つのソースです。6.0 より前は、関連するシステム テーブルは QUERY_REPO でしたが、6.0 以降ではQUERY_REQUESTS
.
6.0 以降を使用していると仮定するとQUERY_REQUESTS.REQUEST_DURATION_MS
、ミリ秒単位でクエリ期間が得られます。
使用例QUERY_REQUESTS
:
選択する * query_requests から request_type = 'クエリ' および user_name = 'dbadmin' および start_timestamp >= CURRENT_DATE ilike 'select%from%schema.table%' をリクエストします start_timestamp 順;
QUERY_PROFILES.QUERY_DURATION_US
とのRESOURCE_ACQUISITIONS.DURATION_MS
列も興味深いかもしれません。まだ慣れていない場合のために、これらのテーブルの簡単な説明を次に示します。
RESOURCE_ACQUISITIONS
- システム内の各リソース プールの各実行中の要求によって取得されたリソース (メモリ、開いているファイル ハンドル、スレッド) に関する情報を保持します。
QUERY_PROFILES
- 実行されたクエリに関する情報を提供します。
vsqlでそれを有効にする方法、またはそれが可能かどうかはわかりません。しかし、その情報はスクリプトから取得できます。
これが疑似コードです(以前はperlを使用していました):
print time
system("vsql -c 'select * from table'");
print time
または、変数に時間を入れて、減算を行います。
もう 1 つのオプションは、Toad などのツールを使用して Vertica に接続することvsql
です。