我正在使用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