postgres的详细操作时间

时间:2016-06-08 10:54:32

标签: sql database postgresql profiling

假设我在某些表上插入了一些触发器。 我如何知道插入实际需要的时间以及执行触发所需的时间?

1 个答案:

答案 0 :(得分:1)

如果对触发触发器的语句使用explain (analyze, verbose),则会在表上看到每个触发器的执行时间。

所以如果你有一个带有触发器的表foo,并运行这样的东西:

explain (analyze, verbose)
insert into foo (id) 
values (1);

您将获得与此类似的输出:

Insert on foo (cost=0.00..0.01 rows=1 width=0) (actual time=938.776..938.776 rows=0 loops=1)
  ->  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.014..0.014 rows=1 loops=1)
        Output: 1
Planning time: 0.040 ms
Trigger foo_trg: time=937.371 calls=1 <<<< here
Execution time: 938.802 ms

请注意explain (analyze)实际上会运行该语句。所以将插入新行。如果你不想要,你需要rollback