本文介绍: 如果当前系统较为繁忙,可以使用TIMESTAMPDIFF函数通过限制current_timestamp和query_start大于某一阈值查看执行时间超过此阈值的查询语句。例如,执行超过2分钟的查询语句可以通过如下语句查询。查询会返回按执行时间长短从大到小排列的查询语句列表。第一条结果就是当前系统中执行时间长的查询语句。查看系统中长时间运行的查询语句。分析长时间运行的查询语句状态。
文章目录
openGauss学习笔记-194 openGauss 数据库运维-常见故障定位案例-分析查询语句长时间运行的问题
194.1 分析查询语句长时间运行的问题
194.1.1 问题现象
系统中部分查询语句运行时间过长。
194.1.2 原因分析
- 查询语句较为复杂,需要长时间运行。
- 查询语句阻塞。
194.1.3 处理办法
-
以操作系统用户omm登录主机。
-
使用如下命令连接数据库。
gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为端口号。
-
查看系统中长时间运行的查询语句。
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;
-
分析长时间运行的查询语句状态。
- 如果查询语句处于正常状态,则等待其执行完毕。
- 如果查询语句阻塞,请参见分析查询语句是否被阻塞处理。
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!
原文地址:https://blog.csdn.net/shuchaoyang/article/details/135540169
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_55324.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。