现在,我使用Amazon、lambda、python和sqlalchemy。当我检查amazon性能洞察力时,我发现调用了一些回滚。到目前为止,回滚是被调用的。但是当我在洞察力中推出其他问题时,就没有错误了。如何找到回滚调用的位置?或者为什么要调用回滚?
这是我的rds性能洞察力。

发布于 2019-09-06 07:47:45
回滚可以从回滚事务以展开查询,或者在返回到池的连接时开始。
有一种方法可以让你感觉到你的应用程序正在做什么,那就是通过事件系统将这些回滚动作连接起来,从而实现一些跟踪。
有两个事件您需要查看:
拦截由事务发起的rollback()事件。
在池连接发生“重置”操作之前调用。
您可以在这些事件上设置监听器,以增加一些计数器,或者执行一些日志记录,以计数回滚的数量。然后您就可以感觉到事务回滚与池回滚的相对权重。
例如,使用一些粗略的全局计数器,但您可以添加所需的任何逻辑:
import logging
from sqlalchemy import event
POOL_ROLLBACKS = 0
TXN_ROLLBACKS = 0
@event.listens_for(YourEngine, 'reset')
def receive_reset(dbapi_connection, connection_record):
POOL_ROLLBACKS += 1
logging.debug(f"Pool rollback count: {POOL_ROLLBACKS}")
@event.listens_for(YourEngine, 'rollback')
def receive_rollback(conn):
# track a transaction based rollback
TXN_ROLLBACKS += 1
logging.debug(f'Transaction rollback count {TXN_ROLLBACKS}')https://stackoverflow.com/questions/57816527
复制相似问题