开发者社区> 问答> 正文

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

rds-pd 2014-06-10 22:41:11 15500
        想必,大家都非常关心这个问题吧?
        关于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使用率案例分析》




SQL 关系型数据库 数据库 数据库管理 索引 RDS
分享到
取消 提交回答
全部回答(3)
  • 调兵虎符
    2014-08-22 17:32:42
    Re【RDS教程】专业DBA速成CPU优化篇
    不错,学习了
    0 0
  • sh_xiaojun
    2014-07-14 15:18:06
    Re【RDS教程】专业DBA速成CPU优化篇
    通过show processlist发现的sql语句的问题及解决方案由于篇幅太长


    请问这里说的 show processlis 在哪里,没找到哈
    0 0
  • solidedge
    2014-06-11 12:28:53
    说实话我老看到RDS里提示我有很多慢查询的语句,可惜我还是看不懂我要如何优化!
    0 0
添加回答
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程