【IT168 技术】阿里云数据库(RDS)的使命是“让天下没有难用的数据库”,让所有用户都能够轻松、便捷的管理云数据库。IT168得到消息,阿里云近期将会升级RDS控制台为云数据库管家。
其中,定期巡检数据库状况,推送数据库健康状况是系统的核心价值。这个功能能够让所有的开发者轻松的管理、维护数据库,有了它每个人都能成为专业的DBA。
阿里云数据库RDS正在免费体验中,大家可以去试用。
今天要介绍的是数据库管家中“优化引擎”的基本工作原理。主要从诊断方式和时间、诊断内容、优化思路这三方面剖析:
1. 诊断方式和时间
诊断系统的诊断方式分为两种,系统自动诊断和用户手工触发的诊断.
其中系统诊断目前由RDS后台系统自动触发,每次系统诊断时间间隔1小时。
用户也可以登录云数据库管家开启手工诊断,诊断报告大概在3-5分钟内生成。每天可进行手工诊断的次数暂时没有限制。
2. 会诊断云数据库的哪些信息
诊断系统会进行数据库安全、基本配置、性能三个维度的检测。
其中安全类会重点关注白名单配置、是否发生过疑似SQL注入。基本配置类会检查该实例是否创建过账号及数据库,从而判断该实例的空闲情况。性能类主要会反映CPU、IOPS、连接数和磁盘空间利用率等指标是否超出异常的阈值,并给出产生相应指标异常的诊断信息。
3. 使用DBA思路,优化解决问题.
诊断系统发现CPU、IOPS、连接数利用率突然飙升后,随即会去分析该实例的SQL慢查询,经过算法判断给出最终影响实例利用率飙升的SQL慢查询。随后将SQL慢查询经过类比分析器分析(该分析器内包含阿里集团优秀DBA的优化SQL语句的宝贵经验),从而给出优化这些慢查询的具体修复建议。
具体SQL优化建议如:
创建索引:在产生慢查询的表中,添加一条索引,有助于提升SQL语句的执行效率,从而减少SQL慢查询。
避免函数:在相关的SQL慢查询中,使用了一些函数调用比如:length(),max(),min()等。使用这些函数会导致索引匹配失效
隐式转换:在SQL语句调用中,字段与表结构定义不符,导致索引匹配失效。比如testc1字段是string类型,并且该字段testc1有索引。但是在SQL语句调用中使用了testc1=1,这样就会导致索引匹配失效
有了云数据库管家诊断系统精准的判断以及专业的建议,人人都可以成为一个专业的DBA了.
诊断系统诊断到磁盘空间利用率过高后(大于80%),会将诊断记录标为异常,随后进行更深入的检测。根据数据文件大小、日志文件大小、临时空间大小三个维度再排查、判断磁盘利用率过高的“罪魁祸首”。针对不同的“罪魁祸首”,云数据库管家会给出不同的处理建议,见下表:
“罪魁祸首” | 详细情况 | 处理建议 |
数据文件过大 | 给出数据量最大的5个表名 | 提示升级磁盘空间或者使用optimize table命令压缩表空间 |
日志文件过大 | 频繁更新的5个表 | 在管理控制台上直接清除binlog文件 |
临时空间过大 | 临时空间过大,通常会有想应的慢查询 | 用kill命令杀掉此条慢查询 |
通过云数据库管家的多维度分析,是不是感觉之前处理磁盘利用率高有点“简单粗暴”了。
想了解更多优化引擎规则,请关注《揭开阿里云-云数据库管家神秘面纱(二)--基于规则的优化引擎让你摸得到》