如何查看正在执行的事务

一、问题描述

今天在pycharm断点调试代码时,同时在终端执行了一个update语句,该update语句被阻塞终端长时间没有反应。

示例如下:

python 复制代码
def test():
    id_ = data.get('id')  # 假设id_为66
    db.session.query(User).filter_by(id=id_).populate_existing().with_for_update().first()
    print("testing")

在第4行代码(print("testing"))处打上断点,然后运行。当运行到第4行时,在终端执行update修改User表的id为66的数据,会发现被阻塞。

二、原因

对User查询时,加了行锁。事务提交后,行锁才会被释放。

二、解决方法

  1. 方法一

    该示例中代码执行完,事务也就会提交,行锁自然会被释放,此时update语句就会执行完成,不阻塞。

  2. 方法二

    查看正在执行的事务,找到阻塞的事务,kill掉。

    PostgreSQL 中,可以从表 pg_stat_activity 中,查看正在执行的事务和查询。

    Mysql中,可以从information_schema 库的 innodb_trx 表中,查看当前执行中的事务。

相关推荐
用户7624117567054 分钟前
第十五章 数据分析
python·数据分析
2601_9619633820 分钟前
电子合同检索与全文搜索怎么测、怎么选:六个指标 + 五家平台对比 + 八个自测问题
数据库·后端·python·django·智能合约
SEO_juper30 分钟前
hreflang 审计工具:外贸多语言站谷歌SEO的隐性杀手
开发语言·人工智能·爬虫·python·seo
打工仔折腾 AI1 小时前
从零开始大模型微调:基于 PyTorch 与 ChatGLM 的 LoRA 实践指南
人工智能·pytorch·后端·python·深度学习·性能优化·ai agent 实战
用户0332126663671 小时前
Python 自动化办公:如何从零快速生成结构清晰的 Excel 报表
python·excel
刘 大 望1 小时前
Agent 的规划与执行范式:Plan-Execute-Replan 与 ReAct
java·python·ai·chatgpt·langchain·ai编程
在世修行2 小时前
智学文枢:数据备份与恢复
python·数据安全·备份恢复·zipfile
ONEYAC唯样2 小时前
TE:不只看产品,更要看价值:下一代高压连接方案如何选择?
python·django
高洁012 小时前
具身智能感知系统底层原理
人工智能·python·深度学习·机器学习·transformer
我就是不信2 小时前
Java8 lambda 表达式 forEach 如何提前终止?
开发语言·windows·python