如何查看正在执行的事务

一、问题描述

今天在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 表中,查看当前执行中的事务。

相关推荐
骇城迷影3 分钟前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
长安牧笛6 分钟前
反传统学习APP,摒弃固定课程顺序,根据用户做题正确性,学习速度,动态调整课程难度,比如某知识点学不会,自动推荐基础讲解和练习题,学习后再进阶,不搞一刀切。
python·编程语言
码界筑梦坊17 分钟前
330-基于Python的社交媒体舆情监控系统
python·mysql·信息可视化·数据分析·django·毕业设计·echarts
森焱森22 分钟前
详解 Spring Boot、Flask、Nginx、Redis、MySQL 的关系与协作
spring boot·redis·python·nginx·flask
he___H25 分钟前
双色球红球
python
deephub28 分钟前
机器学习特征工程:分类变量的数值化处理方法
python·机器学习·特征工程·分类变量
Pyeako1 小时前
深度学习--卷积神经网络(下)
人工智能·python·深度学习·卷积神经网络·数据增强·保存最优模型·数据预处理dataset
OPEN-Source1 小时前
大模型实战:搭建一张“看得懂”的大模型应用可观测看板
人工智能·python·langchain·rag·deepseek
廖圣平1 小时前
从零开始,福袋直播间脚本研究【七】《添加分组和比特浏览器》
python