华为云云数据库rds复杂查询造成磁盘满_云淘科技
场景描述
主机或只读实例偶尔出现磁盘占用高或磁盘占用满,其他只读实例或者备机磁盘空间占用正常。
原因分析
MySQL内部在执行复杂SQL时,会借助临时表进行分组(group by)、排序(order by)、去重(distinct)、Union等操作,当内存空间不够时,便会使用磁盘空间。
排查思路:
因为其他只读实例和备机磁盘占用空间正常,且是偶尔出现,说明该实例磁盘占用高,与承载的业务相关。
获取该实例的慢日志,分析磁盘占用高期间,是否有对应的慢SQL。
如果有慢SQL,执行explain [慢SQL语句],分析相应慢SQL语句。
观察explain语句输出的extra列,是否有using temporary、using filesort,如果有,说明该语句用到了临时表或临时文件,数据量大的情况下,会导致磁盘占用高。
解决方案
复杂查询语句导致磁盘打满,建议客户从业务侧优化响应查询语句,常见优化措施:
加上合适的索引。
在where条件中过滤更多的数据。
重写SQL,优化执行计划。
如果不得不使用临时表,那么一定要减少并发度。
临时规避措施:考虑业务侧优化复杂查询语句需要一定时间,可以通过临时扩容磁盘空间规避。
父主题: 性能资源类
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家