MySQL有一个performance_schema数据库,允许用户在表中捕获SQL语句执行时数据(例如performance_schema.events_statements_history_long;有用的MySQL链接)。
我想知道PostgreSQL中是否存在类似的工具集? (数据库管理员不是很有帮助)
答案 0 :(得分:1)
@ Mingyu的答案是准确的,但根据你的使用情况,可能不是你想要的。您当然可以记录语句执行时间,并且有各种日志分析器可以提供一些详细的数据。
您还可以使用auto-explain模块记录长时间运行的查询的执行计划(解释)。
但是,要快速了解哪些查询需要花费大量时间和原因,请查看pg_stat_statements模块。让您统计(删除常量)查询,他们花了多少时间以及需要多少磁盘I / O等。
答案 1 :(得分: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