2
バッチのSQLベンチマーククエリを実行し、タイミングを計算したいと思います。 I EXECUTE ANALYZEコマンドを使用して実行計画を取得します。アプローチに基づいて一連のPostgreSQLクエリのベンチマーク方法は?
は、私はクエリごとに、私はクエリを実行し、結果を破棄するために実行する代わりにSELECTを使用次のコード
-------------------------
Query = 'Q1';
StartTime := clock_timestamp();
PERFORM <** Query 1 goes here **>
EndTime := clock_timestamp();
Duration := 1000 * (extract(epoch from EndTime) - extract(epoch from StartTime));
INSERT INTO execution_tests VALUES (Query, StartTime, EndTime, Duration);
-------------------------
が含まれている手順を書いたここGet execution time of PostgreSQL query 示唆しました。
単純なクエリでは機能しますが、WITH句を持つクエリが多数あります。マニュアルに従います
WITHクエリの場合は、PERFORMを使用し、クエリをかっこ内に置きます。 (この場合、クエリは1行しか返すことができません)。ベンチマークに必要なすべてのWITHクエリは、複数の行を返す必要があります。
この問題を解決するにはどうすればよいですか?
グレートのようなものについて!ありがとう! RAISE INFOの後にCONTEXTメッセージを削除するには?私はALTER DATABASEを試しましたtest3 SET log_error_verbosity = TERSE;しかし動作しませんでした。 P.S.私はpgAdminで実行しています –
@EstebanZimanyiあなたが何を意味するのか分かりません。これは単なる例です。私が理解したように、テーブルに実行時間を格納したいのですが... – Abelisto
実際には、 "CONTEXT:PL/pgSQL function test_queries()"などのすべてのメッセージを削除するのもいいでしょう(この特定の例では必ずしもそうではありません)さまざまなスケールファクタを使用して長いバッチのクエリをベンチマークするなどの長いスクリプトを実行すると、画面にメッセージが表示されるたびに、「RAISEで262」というメッセージが表示されます。それを行う方法はありますか? –