1

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

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

4

2 回答 2

1

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

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

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

于 2013-09-16T07:40:40.403 回答
0

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

log_statement (enum):控制记录哪些 SQL 语句。有效值为 none (off)、ddl、mod 和 all(所有语句)。ddl 记录所有数据定义语句,例如 CREATE、ALTER 和 DROP 语句。mod 记录所有 ddl 语句,以及数据修改语句,例如 INSERT、UPDATE、DELETE、TRUNCATE 和 COPY FROM。如果 PREPARE、EXECUTE 和 EXPLAIN ANALYZE 语句包含的命令属于适当的类型,则它们也会被记录。对于使用扩展查询协议的客户端,当接收到 Execute 消息时发生日志记录,并且包含 Bind 参数的值(任何嵌入的单引号加倍)。

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

于 2013-09-15T23:41:37.407 回答