openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞

文章目录

    • [openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞](#openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞)
      • [197.1 分析查询语句是否被阻塞](#197.1 分析查询语句是否被阻塞)
        • [197.1.1 问题现象](#197.1.1 问题现象)
        • [197.1.2 原因分析](#197.1.2 原因分析)
        • [197.1.3 处理办法](#197.1.3 处理办法)

openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞

197.1 分析查询语句是否被阻塞

197.1.1 问题现象

数据库系统运行时,在某些业务场景下,查询语句会被阻塞,导致语句运行时间过长。

197.1.2 原因分析

查询语句需要通过加锁来保护其要访问的数据对象。当要进行加锁时发现要访问的数据对象已经被其他会话加锁,则查询语句会被阻塞,等待其他会话完成操作并释放锁资源。这些需要加锁访问的数据对象主要包括表、元组等。

197.1.3 处理办法
  1. 以操作系统用户omm登录主机。

  2. 使用如下命令连接数据库。

    css 复制代码
    gsql -d postgres -p 8000

    postgres为需要连接的数据库名称,8000为端口号。

  3. 从当前活动会话视图查找问题会话的线程ID。

    sql 复制代码
    SELECT w.query AS waiting_query, w.pid AS w_pid, w.usename AS w_user, l.query AS locking_query, l.pid AS l_pid, l.usename AS l_user, t.schemaname || '.' || t.relname AS tablename FROM pg_stat_activity w JOIN pg_locks l1 ON w.pid = l1.pid AND NOT l1.granted JOIN pg_locks l2 ON l1.relation = l2.relation AND l2.granted JOIN pg_stat_activity l ON l2.pid = l.pid JOIN pg_stat_user_tables t ON l1.relation = t.relid WHERE w.waiting = true;
  4. 根据线程ID结束会话。

    scss 复制代码
    SELECT pg_terminate_backend(139834762094352);

    显示类似如下信息,表示结束会话成功。

    markdown 复制代码
    pg_terminate_backend 
    ---------------------
    t
    (1 row)

    显示类似如下信息,表示用户正在尝试结束当前会话,此时仅会重连会话,而不是结束会话。

    vbnet 复制代码
    FATAL:  terminating connection due to administrator command 
    FATAL:  terminating connection due to administrator command The connection to the server was lost. Attempting reset: Succeed

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

相关推荐
码哥字节1 天前
Redis 8.0~8.4 重要更新,新特性很强!
数据库·redis·缓存
未来龙皇小蓝1 天前
【MySQL-索引调优】05:索引相关概念
数据库·mysql·性能优化
码农阿豪1 天前
MySQL 动态分区管理:自动化与优化实践
数据库·mysql·自动化
givemeacar1 天前
redis 使用
数据库·redis·缓存
qiuyuyiyang1 天前
MySQL:drop、delete与truncate区别
数据库·mysql
cga19471 天前
MySQL:数据查询-limit
数据库·mysql
阿乐艾官1 天前
【HBase列式存储数据库】
android·数据库·hbase
2301_815482931 天前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
Nturmoils1 天前
从「亡羊补牢」到「规则先行」:金仓数据库 SQL 防火墙实战解析
数据库·后端
星空露珠1 天前
迷你世界UGC3.0脚本Wiki全局函数
开发语言·数据库·算法·游戏·lua