我有一个PostgreSQL 40TB大小的数据库,每天我都要面对每小时后的高回滚率。我只是想看看有关调用回滚的会话的回滚详细信息,回滚表名称等。我如何从数据库中获取此详细信息。提前感谢。
的数据我没有找到任何SQL或其他方法来获取回滚详细信息
bvjveswy1#
查看日志文件。如果回滚是由错误引起的,则这些错误应该显示在日志中。如果没有错误,但应用程序故意运行ROLLBACK,则唯一的日志记录方式是log_statement = 'all',它可以写入如此多的日志,从而影响数据库性能。log_statement = 'all'的替代方案(如果太多的话)是设置log_transaction_sample_rate = 0.01。然后1%的数据库事务将被记录,这减少了数量,仍然允许你看到足够的ROLLBACK语句来弄清楚发生了什么。
ROLLBACK
log_statement = 'all'
log_transaction_sample_rate = 0.01
1条答案
按热度按时间bvjveswy1#
查看日志文件。如果回滚是由错误引起的,则这些错误应该显示在日志中。如果没有错误,但应用程序故意运行
ROLLBACK
,则唯一的日志记录方式是log_statement = 'all'
,它可以写入如此多的日志,从而影响数据库性能。log_statement = 'all'
的替代方案(如果太多的话)是设置log_transaction_sample_rate = 0.01
。然后1%的数据库事务将被记录,这减少了数量,仍然允许你看到足够的ROLLBACK
语句来弄清楚发生了什么。