GaussDB SQL执行很慢,性能低,有时长时间运行未结束

1、问题现象

SQL执行很慢,性能低,有时长时间运行未结束。

2、原因分析

SQL运行慢,主要可以从以下几方面进行分析:

1、使用EXPLAIN命令查看SQL执行计划,根据执行计划判断是否需要进行SQL调优。

2、分析查询是否被阻塞,导致语句运行时间过长,可以强制结束有问题的会话。

3、审视和修改表定义。选择合适的分布列,避免数据倾斜。

4、分析SQL语句是否使用了不下推的函数,建议更换为支持下推的语法或函数。

5、对表定期做vacuum full和analyze,可回收已更新或已删除的数据所占据的磁盘空间。

6、检查表有无索引支撑,建议例行重建索引。数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。

7、对业务进行优化,分析能否将大表进行分表设计。

3、处理方法

GaussDB(DWS) 提供了分析查询和改进查询的方法,并且为用户提供了一些常见案例以及错误处理办法。您可以参考优化查询性能章节对SQL进行性能调优。常见问题也可以优先参考以下两种方法进行分析:
方法一:对表定期做统计优化查询

变化的表,如果经常insert语句到表中,需要做analyze 表,具体语句为:

Analyze tablename;

经常变化的表,如果经常删除delete数据,需要做vacuum full1,具体语句为:

Vacuum full tablename;

查询表大小,如果表非常大,而实际只有很少数据,那么应该执行vacuum full 对表进行磁盘碎片整理。

select *
  from pg_size_pretty(pg_table_size('tablename'));

方法二:通过pgxc_stat_activity查询正在运行的sql相关信息
查询后台活跃sql

SELECT pid
    , datname
    , usename
    , state,waiting
    , query
 FROM pgxc_stat_activity
WHERE  state <> 'idle';

查询后台业务有锁的sql

SELECT pid
     , datname
     , usename
     , state
     , waiting
     , query 
  FROM pgxc_stat_activity 
 WHERE state <> 'idle' 
   AND waiting=true;

判断是否被锁
如果没有锁,查找相关业务sql,按照方法一中的判断方法进行处理。
如果有锁,则查找出pid字段,使用如下函数,结束任务,释放锁。

SELECT pg_terminate_backend(pid);

  1. 执行vacuum full 语句时注意不能有其他任务在跑。 ↩︎

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
华为GaussDB(for MySQL)是一款支持开源MySQL语法和能力的高性能、高可用的关系型数据库服务。它支持SQL语句的各个方面,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。DDL用于定义或修改数据库中的对象,如表、索引、视图、数据库等。DML用于对数据库表中的数据进行操作。DCL用于设置或更改数据库事务、授权操作、锁表等。DQL用于查询数据库内的数据。 在GaussDB中,你可以使用SQL语句来创建、删除、修改数据库对象,操作数据库表中的数据,设置数据库事务和权限,以及查询数据库中的数据。具体的GaussDB SQL语法可以参考GaussDB(for MySQL)的官方文档或用户指南,以获得更详细的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [一幅文细学GaussDB(三)——SQL语法](https://blog.csdn.net/chengyuhaomei520/article/details/126420732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [GaussDB高斯数据库(SQL语法入门)](https://blog.csdn.net/holal/article/details/127445789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D2cOneluo

万一有大佬给个打赏呢,对不对。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值