在PostgreSQL中测量SQL执行时间



MySQL有一个performance_schema数据库,允许人们在表中捕获SQL语句执行时间数据(例如performance_schema.events_statement_history_long;有用的MySQL链接)。

我想知道PostgreSQL中是否存在类似的工具集?(数据库管理员不是很有帮助)

@Mingyu的答案是准确的,但根据您的用例,可能并不完全是您所追求的。您当然可以记录日志语句的执行时间,并且有各种日志分析器可以提供一些详细的数字。

您还可以使用自动解释模块记录长时间运行的查询的执行计划(解释)。

但是,要快速了解哪些查询花费了多少时间以及原因,请查看pg_stat_statements模块。允许您计算(删除的常量)查询、它们花费的时间以及需要多少磁盘 I/O 等。

默认情况下,postgres 不记录 SQL 语句。 如果您是超级用户,则可以更改设置。

log_statement(枚举):控制记录哪些 SQL 语句。有效值为无(关闭)、ddl、mod 和全部(所有语句)。ddl 记录所有数据定义语句,例如 CREATE、ALTER 和 DROP 语句。MOD 记录所有 DDL 语句,以及数据修改语句,如插入、更新、删除、截断和复制自。如果 PREPARE、EXECUTE 和 EXPLAIN ANALYZE 语句包含的命令类型合适,则还会记录这些语句。对于使用扩展查询协议的客户端,在收到执行消息时进行日志记录,并包含 Bind 参数的值(任何嵌入的单引号加倍)。

http://www.postgresql.org/docs/current/static/runtime-config-logging.html#GUC-LOG-STATEMENT

最新更新