openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题

openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题

194.1 分析查询语句长时间运行的问题

194.1.1 问题现象

系统中部分查询语句运行时间过长。

194.1.2 原因分析
  • 查询语句较为复杂,需要长时间运行。
  • 查询语句阻塞。
194.1.3 处理办法
  1. 以操作系统用户omm登录主机。

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

    gsql -d postgres -p 8000
    

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

  3. 查看系统中长时间运行的查询语句。

    SELECT timestampdiff(minutes, query_start, current_timestamp) AS runtime, datname, usename, query FROM pg_stat_activity WHERE state != 'idle' ORDER BY 1 desc;
    

    注意:该函数仅在openGauss兼容MY类型时(即dbcompatibility = ‘B’)有效,其他类型不支持该函数。

    查询会返回按执行时间长短从大到小排列的查询语句列表。第一条结果就是当前系统中执行时间长的查询语句。

    如果当前系统较为繁忙,可以使用TIMESTAMPDIFF函数通过限制current_timestamp和query_start大于某一阈值查看执行时间超过此阈值的查询语句。timestampdiff的第一个参数为时间差单位。例如,执行超过2分钟的查询语句可以通过如下语句查询。

    SELECT query FROM pg_stat_activity WHERE timestampdiff(minutes, query_start, current_timestamp) > 2;
    
  4. 分析长时间运行的查询语句状态。

    • 如果查询语句处于正常状态,则等待其执行完毕。
    • 如果查询语句阻塞,请参见分析查询语句是否被阻塞处理。

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

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

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

图片

最近更新

  1. TCP协议是安全的吗?

    2024-01-12 14:54:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-12 14:54:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-12 14:54:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-12 14:54:04       18 阅读

热门阅读

  1. 算法习题练习

    2024-01-12 14:54:04       28 阅读
  2. .net core 6 集成和使用 mongodb

    2024-01-12 14:54:04       36 阅读
  3. 【大数据面试】常见数仓建模面试题附答案

    2024-01-12 14:54:04       32 阅读
  4. vue3知识盲点总结

    2024-01-12 14:54:04       28 阅读
  5. js中console.log()的使用方法

    2024-01-12 14:54:04       34 阅读
  6. 箭头函数与普通函数的差异

    2024-01-12 14:54:04       33 阅读
  7. Django身份验证初试

    2024-01-12 14:54:04       43 阅读
  8. 两两交换链表中的节点【链表】

    2024-01-12 14:54:04       38 阅读
  9. 使用OTB数据集需要注意的一个问题

    2024-01-12 14:54:04       37 阅读