开发者社区> 问答> 正文

【RDS教程】专业DBA速成 - CPU优化篇

        想必,大家都非常关心这个问题吧?
        关于RDS实例cpu 超过100%,偶尔出现卡住的现象。通常这种情况都是由于sql 性能问题导致的,下面我来分析下。


        原理:cpu 消耗过大通常情况下都是有慢sql 造成的,这里的慢sql 包括全表扫描,扫描数据量过大,内存排序,磁盘排序,锁争用等待等;

          表现现象:sql 执行状态为:sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result,locked;

         解决方法:用户可以登录到rds,通过show processlist查看当前正在执行的sql,当执行完show processlist后出现大量的语句,通常其状态出现sending data,Copying to tmp table,Copying to tmp table on disk,Sorting result, Using filesort 都是sql有性能问题;

         A.sending data表示:sql正在从表中查询数据,如果查询条件没有适当的索引,则会导致sql执行时间过长;

         B.Copying to tmp table on disk:出现这种状态,通常情况下是由于临时结果集太大,超过了数据库规定的临时内存大小,需要拷贝临时结果集到磁盘上,这个时候需要用户对sql进行优化;

         C.Sorting result, Using filesort:出现这种状态,表示sql正在执行排序操作,排序操作都会引起较多的cpu消耗,通常的优化方法会添加适当的索引来消除排序,或者缩小排序的结果集;


          通过 show processlist发现的sql语句的问题及解决方案由于篇幅太长,请移步 降低CPU使用率案例分析》




展开
收起
rds-pd 2014-06-10 22:41:11 17809 0
3 条回答
写回答
取消 提交回答
  • Re【RDS教程】专业DBA速成CPU优化篇
    不错,学习了
    2014-08-22 17:32:42
    赞同 展开评论 打赏
  • 我是一只小小码
    Re【RDS教程】专业DBA速成CPU优化篇
    通过show processlist发现的sql语句的问题及解决方案由于篇幅太长


    请问这里说的 show processlis 在哪里,没找到哈
    2014-07-14 15:18:06
    赞同 展开评论 打赏
  • 说实话我老看到RDS里提示我有很多慢查询的语句,可惜我还是看不懂我要如何优化!
    2014-06-11 12:28:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像