我正在使用Postgresql。我想測試一個函數執行多少時間。由於該函數只需要幾毫秒,因此我想將其稱爲循環1000次以獲得準確的數字。Postgres相當於MySQL的BENCHMARK()函數
MySQL有一個BENCHMARK()函數來做到這一點。是否有一個等價物,還是我必須寫一個循環的程序來做到這一點?
我正在使用Postgresql。我想測試一個函數執行多少時間。由於該函數只需要幾毫秒,因此我想將其稱爲循環1000次以獲得準確的數字。Postgres相當於MySQL的BENCHMARK()函數
MySQL有一個BENCHMARK()函數來做到這一點。是否有一個等價物,還是我必須寫一個循環的程序來做到這一點?
用循環編寫一個程序 - 不應超過5分鐘。
在PostgreSQL您通常這樣做與generate_series
:
SELECT my_function()
FROM generate_series(1,5000);
或
SELECT (SELECT my_query ....)
FROM generate_series(1,5000);
在後一種情況下,你可以添加OFFSET 0
到子查詢或在STRICT
SQL功能,防止它包查詢計劃人員不需要提出常見的條件和小節,否則就很聰明。
可以使用psql的\timing
命令,使用SET log_duration = on
或使用EXPLAIN (ANALYZE, BUFFERS)
來獲得計時,所有這些時間都有細微差別 - 請參閱文檔。簡而言之,\timing
測量時間,包括向客戶進行往返和價值轉移。 log_duration
度量服務器端的執行時間。 EXPLAIN (ANALYZE, BUFFERS)
測量語句執行的詳細信息,但增加了時間開銷,可能會降低一點。
+1,妙用 –
已經這樣做了,但是知道是否有標準功能會很好。 – Dojo