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

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

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

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

相关推荐
鱼找水需要时间4 分钟前
国产银河麒麟系统安装mongodb副本集
数据库·mongodb
Logic10112 分钟前
《数据库运维》 郭文明 实验5 数据库性能监视与优化实验核心操作与思路解析
运维·数据库·sql·mysql·计算机网络技术·形考作业·国家开放大学
刺客xs19 分钟前
Qt ---- Qt6.5.3 连接MySQL数据库
数据库·qt·mysql
TiDB 社区干货传送门29 分钟前
“医疗专业应用+分布式数据底座”:平凯数据库与金唐软件全链路赋能医疗国产化与数字化转型
数据库·分布式
德彪稳坐倒骑驴30 分钟前
SQL刷题笔记-我没做出来的题目
数据库·笔记·sql
GottdesKrieges36 分钟前
通过obd升级OceanBase数据库
数据库·oracle·oceanbase
TiDB 社区干货传送门44 分钟前
【附操作指南】从 Oceanbase 增量数据同步到 TiDB
linux·服务器·数据库·tidb·oceanbase
光影少年1 小时前
postgrsql和mysql区别?
数据库·mysql·postgresql
Hello.Reader1 小时前
Flink SQL Window Top-N窗口榜单的正确打开方式
数据库·sql·flink
wsx_iot1 小时前
MySQL 的 MVCC(多版本并发控制)详解
数据库·mysql