如何配置plpgsql程序

时间:2011-02-08 16:33:55

标签: postgresql stored-procedures profiling plpgsql

我正在尝试提高长期运行的plpgsql存储过程的性能,但我不知道有什么(如果有的话)分析工具可用。任何人都可以提供有关如何分析此类程序的建议吗?

4 个答案:

答案 0 :(得分:5)

从包含notices的过程中提取一些clock_timestamp(),以查看数据库花费时间的位置。并使程序尽可能简单。

你能告诉我们一个例子吗?

答案 1 :(得分:2)

我们目前正在寻找这个问题的更好答案,并且偶然发现了这个工具: http://www.openscg.com/2015/02/postgresql-plpgsql-profiler/ 主持人: https://bitbucket.org/openscg/plprofiler

它声称可以为您提供所需内容,包括在每个功能线上花费的总时间。我们还没有进一步调查,但根据作者的说法,我们很乐观。

答案 2 :(得分:1)

首先,您可以将logging of all statements打开到Postgres日志文件中。日志将包含每个语句的运行时。这样,您可以识别最慢的查询并尝试优化它们。

但是阅读你对弗兰克的帖子的评论我猜想循环是你的问题。尝试摆脱循环并在单个查询中执行所有操作。一条读取大量行的语句通常比只读几行的语句更有效。

答案 3 :(得分:1)

尝试使用pg_stat_statements扩展名(http://www.postgresql.org/docs/9.2/static/pgstatstatements.html)。 它可以显示所有语句的呼叫号码和总呼叫时间(包括plpgsql过程中的子语句)。