PolarDB-X提供的SQL限流能力,执行过程中,可能出现的慢SQL的原因,有哪些?
可能存在慢SQL的原因,分为如下三类:
业务问题:明显的数据倾斜、不合理的分片策略设置、数据返回过多等和业务使用相关问题。
在不合理分片策略的情况下,有可能出现某一个分片里的数据量非常多,某些分片的数据量非常少。一旦某一个SQL落到数据非常多的分片,就可能占用比较多的查询时间,或者产生较大的数据扫描IO,成为整个SQL执行的瓶颈点。 这种情况下,我们需要对整个表结构进行优化调整。
对于一些业务使用方面的问题,比如基于某个列进行查询但该列缺少全局二级索引,导致很多不必要的分片扫描,占用了较多的CN的CPU资源。这种情况下,需要进行SQL的优化或者创建一些索引来对该问题进行优化。
对于业务或SQL本身需要返回过多数据的情况,我们推荐置一个合理的限流规则(比如限定并发度),避免过多的同类SQL占用过多的资源。
系统问题:流量太大,资源成为瓶颈或者网络抖动造成的问题。
对于资源瓶颈的情况,我们推荐采用弹性扩展的方式来增加更多机器,对问题进行优化。
对于网络抖动导致延迟变大的情况,需要检查网络配置是否正确,或者网络中间的一些组件是否存在问题。
执行问题:如选错索引,选错Join类型或顺序等问题。
由于业务SQL到了PolarDB-X的CN节点后,会对SQL进行解析优化,生成相应的执行计划。在这个过程中,PolarDB-X会根据统计信息,选择一个合适的执行计划。如果执行统计信息过期或不准确,就可能出现选错索引、选错Join类型或顺序等问题,也会导致慢SQL。在这种情况下,我们需要对SQL进行进一步分析优化或改写,以解决慢SQL的问题。
以上内容摘自《PolarDB-X 从入门到实战》电子书,点击https://developer.aliyun.com/ebook/download/7674可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。