1

我正在使用Postgresql。我想測試一個函數執行多少時間。由於該函數只需要幾毫秒,因此我想將其稱爲循環1000次以獲得準確的數字。Postgres相當於MySQL的BENCHMARK()函數

MySQL有一個BENCHMARK()函數來做到這一點。是否有一個等價物,還是我必須寫一個循環的程序來做到這一點?

回答

1

用循環編寫一個程序 - 不應超過5分鐘。

+0

已經這樣做了,但是知道是否有標準功能會很好。 – Dojo

3

在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)測量語句執行的詳細信息,但增加了時間開銷,可能會降低一點。

+0

+1,妙用 –