暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 墨天轮 2020-11-12
633

问题现象

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

原因分析

  • 查询语句较为复杂,需要长时间运行。

  • 查询语句阻塞

处理办法

  • 步骤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;
    

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

    若当前系统较为繁忙,可以通过限制current_timestamp - query_start大于某一阈值来 查看执行时间超过此阈值的查询语句,注意,timestampdiff的第一个参数为时间差单 位,详细请参见《开发者指南》中“SQL参考 > 函数和操作符 > 时间和日期处理函数 和操作符 > TIMESTAMPDIFF”章节章节。例如,超过2分钟的查询语句可以通过以下 语句查询:

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

    • 若查询语句处于正常状态,则等待其执行完毕。

    • 若查询语句阻塞,分析查询语句是否被阻塞中的处理方式。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

文集目录
暂无数据