GBase 8a
性能调优
文章

排查GBase 8a数据库集群业务慢SQL

发表于2025-01-11 12:57:2556次浏览1个评论

1、单个任务慢的情形

1)查所有管理节点的任务

如果其中1个任务慢,比如SQLID=2657

2)查所有数据节点SQLID=2657执行情况

慢在1个节点上:

情况一、如果慢在1个数据节点,排查慢的数据节点的cpu/mem/io情况,硬件问题,需要维修;

情况二、数据倾斜问题,需要重新定义表hash字段;

慢在多个节点上:

情况一、SQL性能较差,排查/tmpdata,/gctmpdb目录值;

2、多个任务慢的情形

1)查所有管理节点的任务

确定1个时间最长的SQL,比如SQLID=2657

2)查所有数据节点SQLID=2657执行情况

慢在1个节点上:

情况一、如果慢在1个数据节点,排查慢的数据节点的cpu/mem/io情况,硬件问题,需要维修;

慢在多个节点上:

情况一、SQL性能较差,排查/tmpdata,/gctmpdb目录值;

情况二、排查表锁

3)查所有数据节点SQL 合计数统计

慢在1个节点上,即该节点count明显较高:

情况一、排查慢的数据节点的cpu/mem/io情况,硬件问题,需要维修;

慢在多个节点上:

情况一、SQL性能较差,排查/tmpdata,/gctmpdb目录值;

情况二、排查表锁

3、排查表锁

有其他业务拿到了锁,需要等待。可以通过 gcadmin showlock 查看锁占用情况。

GBase8a MPP Cluster查看集群锁 showlock

4、优化问题
数据倾斜
主要是分布列或者group的第一个列重复值非常高,导致数据在某1个或几个上出现倾斜,导致虽然节点很多,但性能依然很慢。

没有并行
包括系统并发太高,导致后面的SQL没有更多的线程可用,导致内部串行执行。具体参考数据库参数配置 gbase_parallel_degree参数。

GBase 8a数据库集群SQL并行读参数

也可能是某些算子或函数,数据库内部当前版本没有实现并行,这个需要咨询厂商判断。

算法选择不对
数据库内部评估采样选择算法时出现失误,比如group时。此时可以人工设置参数(通过hint)

笛卡尔积
这个类似业务问题,区别是这个是SQL书写问题,是可以优化的。那个是业务本身就是结果集大。
内部逻辑等待
比如在等其它进程释放锁,特别是DML 和 DQL之间。 新版本集群已经支持DQL不再开住DML的追加(insertm load)模式,但依然会阻塞update等。
或者你在delete或者drop表,但有个该表的长查询在跑,也需要等待其执行完毕。

网络故障
节点网络故障,会在某些情况下出现长时间等待,而默认数据库读写超时参数是100万秒。 这个需要业务根据实际情况,设置合适的超时参数

评论

登录后才可以发表评论
崔哥发表于 9个月前
给你点个赞