排查GBase 8a数据库集群业务慢SQL
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万秒。 这个需要业务根据实际情况,设置合适的超时参数
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528