在postgres中检查重做/提交的数据大小?

问题描述:

我有以下描述查询:在postgres中检查重做/提交的数据大小?

  1. 如何检查PostgreSQL中重做/未提交的数据的大小? 看起来像是我按顺序执行多个更新,它会变慢。 和Update 1一样,更新2,.... update n; ...似乎更新n比更新1慢。未提交的数据量是否会影响它? PostgreSQL中的重做管理如何工作?

  2. 如何监视存储函数中当前正在运行的SQL? pg_stat_activity只显示函数调用;在会议层面。如何在现在正在运行的那个函数下获得当前的SQL?

〜桑托斯

你清楚地从Oracle背景的。

PostgreSQL没有撤消和重做日志,因此。

未提交(正在执行或回滚),实时提交的数据和已删除的数据在堆中混合在一起,即主表内容。回滚事务使用的分数,更新行的旧版本和已删除的行被称为表膨胀。见the wiki

最接近做重做日志的是预写日志pg_xlog。没有获得当前xlog大小的SQL级接口。

该文档更详细地讨论了这一点,但它是PostgreSQL管理的一个领域,可以真正使用感兴趣的贡献者的更多关注。更好的内置监控工具和更好的文档都是不错的。修补程序是受欢迎的。

至于你的第二个问题......你没有。目前没有办法获得函数调用堆栈。其中一个正在讨论中,但从9.5开始尚未实施。

+0

应该慢查询日志提供那些作为存储过程的一部分运行的SQL?我已经启用它,但似乎没有! :(:( logging_collector =上 log_directory目录=“pg_log” log_min_duration_statement = 1000 –

+0

号的查询中,PL/pgSQL里没有登录的功能。你可以使用'auto_explain'模块来跟踪它们运行,但在显著性能成本。 –