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,妙用 –