SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
MySQL Tuning For CPU Bottleneck


      OTN China Tour 2012
            @简朝阳
           平安金融科技
主题


 哪里会有性能瓶颈?
  - 主机? 存储? 网络?

 谁消耗了我的 CPU ?
  - 谁使用? 祸首是谁?

 如何减少 CPU 消耗?
  - 减少等待? 减少运算?
?
哪里会有性能瓶颈
?
     哪里会有性能瓶颈




存储
?
     哪里会有性能瓶颈




主机




存储
?
     哪里会有性能瓶颈


网络




主机




网络



存储
?
     哪里会有性能瓶颈




存储
哪里会有性能瓶颈        ?




存储      吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
哪里会有性能瓶颈        ?

主机




存储      吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
哪里会有性能瓶颈        ?

        CPU
主机
        内存
        Raid卡
        总线
        …




存储      吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
哪里会有性能瓶颈        ?
网络



        CPU
主机
        内存
        Raid卡
        总线
        …




存储      吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
哪里会有性能瓶颈        ?
网络      延时 / 吞吐量 / IOPS / …




        CPU
主机
        内存
        Raid卡
        总线
        …




存储      吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
?
谁消耗了我的CPU
            - 谁使用?
?
谁消耗了我的CPU
            - 谁使用?




                     cpu
?
     谁消耗了我的CPU
                 - 谁使用?




us                        cpu
?
          谁消耗了我的CPU
                      - 谁使用?


     用户




us                             cpu
?
          谁消耗了我的CPU
                      - 谁使用?


     用户




us   sy                        cpu
?
               谁消耗了我的CPU
                           - 谁使用?


          用户




us        sy                        cpu


     系统
?
               谁消耗了我的CPU
                           - 谁使用?


          用户




us        sy     wa                 cpu


     系统
谁消耗了我的CPU  ?   - 谁使用?


          用户




us        sy          wa                cpu


     系统

               IO等待
谁消耗了我的CPU            ?   - 谁使用?


          用户




us        sy          wa   ni & si                cpu


     系统

               IO等待
谁消耗了我的CPU            ?   - 谁使用?


          用户

                           软硬中断




us        sy          wa   ni & si                cpu


     系统

               IO等待
谁消耗了我的CPU            ?   - 谁使用?


          用户

                           软硬中断




us        sy          wa   ni & si   id           cpu


     系统

               IO等待
谁消耗了我的CPU            ?   - 谁使用?


          用户

                           软硬中断




us        sy          wa   ni & si   id           cpu


     系统

               IO等待                         空闲
谁消耗了我的CPU         ?   - 谁使用?




us   sy     wa    ni & si   id           cpu




          较为难改变
谁消耗了我的CPU        ?   - 祸首是谁?




us   sy     wa   ni & si   id        cpu
谁消耗了我的CPU                  ?   - 祸首是谁?

     用户空间的CPU消耗,各种逻辑运算:
       函数/排序/类型转换/逻辑IO访问/…




us     sy         wa         ni & si   id        cpu
谁消耗了我的CPU                  ?   - 祸首是谁?

     用户空间的CPU消耗,各种逻辑运算:
       函数/排序/类型转换/逻辑IO访问/…




us     sy         wa         ni & si   id        cpu



         等待IO请求的完成,
         此时CPU实际上空闲
?
如何减少 CPU 消耗
?
如何减少 CPU 消耗
              - 减少等待
如何减少 CPU 消耗             ?- 减少等待



us   sy           wa    ni & si    id       cpu



      减少IO量:
          SQL/Index/…




     注:以往大多数关于数据库优化的资料都是解决io等待问题
如何减少 CPU 消耗                 ?
                                      - 减少等待



us   sy           wa        ni & si   id       cpu



      减少IO量:
          SQL/Index/…
      提升 IO 处理能力:
          加Cache/加磁盘/SSD…



     注:以往大多数关于数据库优化的资料都是解决io等待问题
?
如何减少 CPU 消耗
              - 减少计算
如何减少 CPU 消耗      ?
                             - 减少计算



us     sy     wa   ni & si   id       cpu




     • 降低逻辑运算量
如何减少 CPU 消耗      ?
                             - 减少计算



us     sy     wa   ni & si   id       cpu




     • 降低逻辑运算量
     • 减少逻辑IO量
如何减少 CPU 消耗      ?
                              - 减少计算



us      sy     wa   ni & si   id       cpu




     • 降低逻辑运算量
     • 减少逻辑IO量
     • 减少Query请求量
如何减少 CPU 消耗                 ?   - 减少计算



us         sy         wa          ni & si       id       cpu




• 降低逻辑运算量
     ① 避免使用函数:将运算转移至易于扩展的应用服务器中
       如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数
如何减少 CPU 消耗                    ?- 减少计算



us         sy           wa           ni & si    id       cpu




• 降低逻辑运算量
     ① 避免使用函数:将运算转移至易于扩展的应用服务器中
       如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数
     ② 减少排序:利用索引取得有序数据或避免不必要排序
       如 union all代替 union,order by 索引字段等
如何减少 CPU 消耗                    ?- 减少计算



us         sy           wa           ni & si    id       cpu




• 降低逻辑运算量
     ① 避免使用函数:将运算转移至易于扩展的应用服务器中
       如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数
     ② 减少排序:利用索引取得有序数据或避免不必要排序
       如 union all代替 union,order by 索引字段等
     ③ 禁止类型转换:使用合适类型并保持传入参数类型与数据库字段类型绝对一致
       如数字就是用tinyint/int/bigint等,必需转换的在传入数据库之前就在应用中转好
如何减少 CPU 消耗                    ?- 减少计算



us         sy           wa           ni & si    id       cpu




• 降低逻辑运算量
     ① 避免使用函数:将运算转移至易于扩展的应用服务器中
       如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数
     ② 减少排序:利用索引取得有序数据或避免不必要排序
       如 union all代替 union,order by 索引字段等
     ③ 禁止类型转换:使用合适类型并保持传入参数类型与数据库字段类型绝对一致
       如数字就是用tinyint/int/bigint等,必需转换的在传入数据库之前就在应用中转好
     ④ 简单类型:尽量避免使用复杂类型,降低由于复杂类型带来的附加运算
     ⑤ …
如何减少 CPU 消耗          ?
                                    - 减少计算



us        sy      wa      ni & si   id       cpu




• 减少逻辑IO量
     ① Index:优化索引,减少不必要的表扫描
       如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里
如何减少 CPU 消耗           ?
                                     - 减少计算



us        sy       wa      ni & si   id       cpu




• 减少逻辑IO量
     ① Index:优化索引,减少不必要的表扫描
        如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里
     ② Table:合理拆分,适度冗余
        如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”,更多详见这里
如何减少 CPU 消耗               ?   - 减少计算



us         sy         wa        ni & si      id          cpu




• 减少逻辑IO量
     ① Index:优化索引,减少不必要的表扫描
        如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里
     ② Table:合理拆分,适度冗余
        如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”,更多详见这里
     ③ SQL:调整SQL写法,充分利用现有索引,避免不必要的扫描,排序及其他运算
        如减少复杂Join,减少order by,尽量union all,避免子查询等,更多详见这里
如何减少 CPU 消耗                 ?     - 减少计算



us          sy          wa         ni & si        id           cpu




• 减少逻辑IO量
     ① Index:优化索引,减少不必要的表扫描
        如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里
     ② Table:合理拆分,适度冗余
        如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”,更多详见这里
     ③ SQL:调整SQL写法,充分利用现有索引,避免不必要的扫描,排序及其他运算
        如减少复杂Join,减少order by,尽量union all,避免子查询等,更多详见这里
     ④ 数据类型:够用就好,减少不必要的一味使用大字段
        如 tinyint够用就别总是int,int够用也别老bigint,date够用也别总是替mestamp
     ⑤ …
如何减少 CPU 消耗       ?
                                 - 减少计算



us        sy      wa   ni & si   id       cpu




• 减少Query请求量(非数据库本身)
     ① 适当缓存:降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存
       如用户信息,商品信息等等
如何减少 CPU 消耗          ?
                                    - 减少计算



us        sy      wa      ni & si   id       cpu




• 减少Query请求量(非数据库本身)
     ① 适当缓存:降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存
       如用户信息,商品信息等等
     ② 优化实现:尽量去除不必要的重复请求
       如禁止同一页面多次重复请求相同数据的问题,通过跨页面参数传递减少访问等
如何减少 CPU 消耗         ?
                                    - 减少计算



us         sy     wa      ni & si   id       cpu




• 减少Query请求量(非数据库本身)
     ① 适当缓存:降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存
       如用户信息,商品信息等等
     ② 优化实现:尽量去除不必要的重复请求
       如禁止同一页面多次重复请求相同数据的问题,通过跨页面参数传递减少访问等
     ③ 合理需求:评估需求产出比,对于产出比极端低下的需求合理去除
     ④ …
Q&A


OTN China Tour 2012
      @简朝阳
     平安金融科技

Contenu connexe

Tendances

排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析frogd
 
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)frogd
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)ykdsg
 
海量日志分析系统实践,Dba
海量日志分析系统实践,Dba海量日志分析系统实践,Dba
海量日志分析系统实践,DbaCevin Cheung
 
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223Jinrong Ye
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流Edward Lee
 
Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3乐费 胡
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.pptFrank Cai
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
服务器端性能优化
服务器端性能优化服务器端性能优化
服务器端性能优化cenwenchu
 
JVM内容管理和垃圾回收
JVM内容管理和垃圾回收JVM内容管理和垃圾回收
JVM内容管理和垃圾回收Tony Deng
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈Tim Y
 
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Jinrong Ye
 
Key value store
Key value storeKey value store
Key value storexuanhan863
 
并发编程交流
并发编程交流并发编程交流
并发编程交流bluedavy lin
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查bluedavy lin
 

Tendances (18)

排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
 
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
数据库内核分享第二期(Inno db 日志 回滚段 & 崩溃恢复实现详解)
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
 
海量日志分析系统实践,Dba
海量日志分析系统实践,Dba海量日志分析系统实践,Dba
海量日志分析系统实践,Dba
 
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3Web并发模型粗浅探讨v3
Web并发模型粗浅探讨v3
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.ppt
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
服务器端性能优化
服务器端性能优化服务器端性能优化
服务器端性能优化
 
JVM内容管理和垃圾回收
JVM内容管理和垃圾回收JVM内容管理和垃圾回收
JVM内容管理和垃圾回收
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用
 
Key value store
Key value storeKey value store
Key value store
 
并发编程交流
并发编程交流并发编程交流
并发编程交流
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查
 

En vedette

Oracle my sql-or-nosql
Oracle my sql-or-nosqlOracle my sql-or-nosql
Oracle my sql-or-nosqlSky Jian
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
MySQL Scalability Mistakes - OTN
MySQL Scalability Mistakes - OTNMySQL Scalability Mistakes - OTN
MySQL Scalability Mistakes - OTNRonald Bradford
 
The History and Future of the MySQL ecosystem
The History and Future of the MySQL ecosystemThe History and Future of the MySQL ecosystem
The History and Future of the MySQL ecosystemRonald Bradford
 
10x Performance Improvements - A Case Study
10x Performance Improvements - A Case Study10x Performance Improvements - A Case Study
10x Performance Improvements - A Case StudyRonald Bradford
 
Lessons Learned Managing Large AWS Environments
Lessons Learned Managing Large AWS EnvironmentsLessons Learned Managing Large AWS Environments
Lessons Learned Managing Large AWS EnvironmentsRonald Bradford
 
MySQL性能调优最佳实践
MySQL性能调优最佳实践MySQL性能调优最佳实践
MySQL性能调优最佳实践Sky Jian
 
MySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsMySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsRonald Bradford
 
MySQL 8.0 & Unicode: Why, what & how
MySQL 8.0 & Unicode: Why, what & howMySQL 8.0 & Unicode: Why, what & how
MySQL 8.0 & Unicode: Why, what & howBernt Marius Johnsen
 
Monitoring your technology stack with New Relic
Monitoring your technology stack with New RelicMonitoring your technology stack with New Relic
Monitoring your technology stack with New RelicRonald Bradford
 
MySQL 8.0: GIS — Are you ready?
MySQL 8.0: GIS — Are you ready?MySQL 8.0: GIS — Are you ready?
MySQL 8.0: GIS — Are you ready?Norvald Ryeng
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17Alkin Tezuysal
 
Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1Ronald Bradford
 
SQL window functions for MySQL
SQL window functions for MySQLSQL window functions for MySQL
SQL window functions for MySQLDag H. Wanvik
 
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftReal world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftChristian Posta
 
Linux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLLinux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLYoshinori Matsunobu
 
MySQL 8.0: Common Table Expressions
MySQL 8.0: Common Table Expressions MySQL 8.0: Common Table Expressions
MySQL 8.0: Common Table Expressions oysteing
 
MySQL Server Defaults
MySQL Server DefaultsMySQL Server Defaults
MySQL Server DefaultsMorgan Tocker
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...Sveta Smirnova
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターンyoku0825
 

En vedette (20)

Oracle my sql-or-nosql
Oracle my sql-or-nosqlOracle my sql-or-nosql
Oracle my sql-or-nosql
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
MySQL Scalability Mistakes - OTN
MySQL Scalability Mistakes - OTNMySQL Scalability Mistakes - OTN
MySQL Scalability Mistakes - OTN
 
The History and Future of the MySQL ecosystem
The History and Future of the MySQL ecosystemThe History and Future of the MySQL ecosystem
The History and Future of the MySQL ecosystem
 
10x Performance Improvements - A Case Study
10x Performance Improvements - A Case Study10x Performance Improvements - A Case Study
10x Performance Improvements - A Case Study
 
Lessons Learned Managing Large AWS Environments
Lessons Learned Managing Large AWS EnvironmentsLessons Learned Managing Large AWS Environments
Lessons Learned Managing Large AWS Environments
 
MySQL性能调优最佳实践
MySQL性能调优最佳实践MySQL性能调优最佳实践
MySQL性能调优最佳实践
 
MySQL Backup and Recovery Essentials
MySQL Backup and Recovery EssentialsMySQL Backup and Recovery Essentials
MySQL Backup and Recovery Essentials
 
MySQL 8.0 & Unicode: Why, what & how
MySQL 8.0 & Unicode: Why, what & howMySQL 8.0 & Unicode: Why, what & how
MySQL 8.0 & Unicode: Why, what & how
 
Monitoring your technology stack with New Relic
Monitoring your technology stack with New RelicMonitoring your technology stack with New Relic
Monitoring your technology stack with New Relic
 
MySQL 8.0: GIS — Are you ready?
MySQL 8.0: GIS — Are you ready?MySQL 8.0: GIS — Are you ready?
MySQL 8.0: GIS — Are you ready?
 
Proxysql use case scenarios fosdem17
Proxysql use case scenarios    fosdem17Proxysql use case scenarios    fosdem17
Proxysql use case scenarios fosdem17
 
Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1
 
SQL window functions for MySQL
SQL window functions for MySQLSQL window functions for MySQL
SQL window functions for MySQL
 
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftReal world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShift
 
Linux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLLinux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQL
 
MySQL 8.0: Common Table Expressions
MySQL 8.0: Common Table Expressions MySQL 8.0: Common Table Expressions
MySQL 8.0: Common Table Expressions
 
MySQL Server Defaults
MySQL Server DefaultsMySQL Server Defaults
MySQL Server Defaults
 
What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...What you wanted to know about MySQL, but could not find using inernal instrum...
What you wanted to know about MySQL, but could not find using inernal instrum...
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 

Similaire à MySQL Tuning For CPU Bottleneck

Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络lovingprince58
 
Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析Frank Lee
 
百度分布式数据库平台
百度分布式数据库平台百度分布式数据库平台
百度分布式数据库平台Wyatt Fang
 
百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010Chuanying Du
 
Lvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongLvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongMichael Zhang
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统锐 张
 
大话Ssd(淘宝核心系统数据库组 褚霸)
大话Ssd(淘宝核心系统数据库组 褚霸)大话Ssd(淘宝核心系统数据库组 褚霸)
大话Ssd(淘宝核心系统数据库组 褚霸)crazyshell
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
大话处理器
大话处理器大话处理器
大话处理器mosolili
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130Jinrong Ye
 
Hp刀片机测试
Hp刀片机测试Hp刀片机测试
Hp刀片机测试alex1x
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践mysqlops
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事Chieh (Jack) Yu
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化colderboy17
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化guiyingshenxia
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践Feng Yu
 

Similaire à MySQL Tuning For CPU Bottleneck (20)

Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络
 
Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析
 
百度分布式数据库平台
百度分布式数据库平台百度分布式数据库平台
百度分布式数据库平台
 
百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010
 
MySQL调优
MySQL调优MySQL调优
MySQL调优
 
Lvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongLvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukong
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统
 
大话Ssd(淘宝核心系统数据库组 褚霸)
大话Ssd(淘宝核心系统数据库组 褚霸)大话Ssd(淘宝核心系统数据库组 褚霸)
大话Ssd(淘宝核心系统数据库组 褚霸)
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
大话处理器
大话处理器大话处理器
大话处理器
 
服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130服务器基准测试-叶金荣@CYOU-20121130
服务器基准测试-叶金荣@CYOU-20121130
 
Hp刀片机测试
Hp刀片机测试Hp刀片机测试
Hp刀片机测试
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
 
阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化阿里巴巴 叶正盛 数据库性能量化
阿里巴巴 叶正盛 数据库性能量化
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
 
17 cpu01
17 cpu0117 cpu01
17 cpu01
 

Plus de Sky Jian

浅谈 MySQL 性能调优
浅谈 MySQL 性能调优浅谈 MySQL 性能调优
浅谈 MySQL 性能调优Sky Jian
 
浅谈数据库优化
浅谈数据库优化浅谈数据库优化
浅谈数据库优化Sky Jian
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构Sky Jian
 
高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践Sky Jian
 
MySQL Explain
MySQL Explain MySQL Explain
MySQL Explain Sky Jian
 
My sql cluster 基础
My sql cluster   基础My sql cluster   基础
My sql cluster 基础Sky Jian
 
高可用可扩展数据库架构方案探讨
高可用可扩展数据库架构方案探讨高可用可扩展数据库架构方案探讨
高可用可扩展数据库架构方案探讨Sky Jian
 
Life Of A Dirty Page Inno Db Disk Io
Life Of A Dirty Page Inno Db Disk IoLife Of A Dirty Page Inno Db Disk Io
Life Of A Dirty Page Inno Db Disk IoSky Jian
 
My Sql Performance In A Cloud
My Sql Performance In A CloudMy Sql Performance In A Cloud
My Sql Performance In A CloudSky Jian
 
Oracle Data Buffer Cache
Oracle Data Buffer CacheOracle Data Buffer Cache
Oracle Data Buffer CacheSky Jian
 

Plus de Sky Jian (10)

浅谈 MySQL 性能调优
浅谈 MySQL 性能调优浅谈 MySQL 性能调优
浅谈 MySQL 性能调优
 
浅谈数据库优化
浅谈数据库优化浅谈数据库优化
浅谈数据库优化
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 
高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践
 
MySQL Explain
MySQL Explain MySQL Explain
MySQL Explain
 
My sql cluster 基础
My sql cluster   基础My sql cluster   基础
My sql cluster 基础
 
高可用可扩展数据库架构方案探讨
高可用可扩展数据库架构方案探讨高可用可扩展数据库架构方案探讨
高可用可扩展数据库架构方案探讨
 
Life Of A Dirty Page Inno Db Disk Io
Life Of A Dirty Page Inno Db Disk IoLife Of A Dirty Page Inno Db Disk Io
Life Of A Dirty Page Inno Db Disk Io
 
My Sql Performance In A Cloud
My Sql Performance In A CloudMy Sql Performance In A Cloud
My Sql Performance In A Cloud
 
Oracle Data Buffer Cache
Oracle Data Buffer CacheOracle Data Buffer Cache
Oracle Data Buffer Cache
 

MySQL Tuning For CPU Bottleneck

  • 1. MySQL Tuning For CPU Bottleneck OTN China Tour 2012 @简朝阳 平安金融科技
  • 2. 主题  哪里会有性能瓶颈? - 主机? 存储? 网络?  谁消耗了我的 CPU ? - 谁使用? 祸首是谁?  如何减少 CPU 消耗? - 减少等待? 减少运算?
  • 4. 哪里会有性能瓶颈 存储
  • 5. 哪里会有性能瓶颈 主机 存储
  • 6. 哪里会有性能瓶颈 网络 主机 网络 存储
  • 7. 哪里会有性能瓶颈 存储
  • 8. 哪里会有性能瓶颈 ? 存储 吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
  • 9. 哪里会有性能瓶颈 ? 主机 存储 吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
  • 10. 哪里会有性能瓶颈 ? CPU 主机 内存 Raid卡 总线 … 存储 吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
  • 11. 哪里会有性能瓶颈 ? 网络 CPU 主机 内存 Raid卡 总线 … 存储 吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
  • 12. 哪里会有性能瓶颈 ? 网络 延时 / 吞吐量 / IOPS / … CPU 主机 内存 Raid卡 总线 … 存储 吞吐量 / IOPS / 容量 / 延时 / 内部带宽 / …
  • 13. ? 谁消耗了我的CPU - 谁使用?
  • 14. ? 谁消耗了我的CPU - 谁使用? cpu
  • 15. 谁消耗了我的CPU - 谁使用? us cpu
  • 16. 谁消耗了我的CPU - 谁使用? 用户 us cpu
  • 17. 谁消耗了我的CPU - 谁使用? 用户 us sy cpu
  • 18. 谁消耗了我的CPU - 谁使用? 用户 us sy cpu 系统
  • 19. 谁消耗了我的CPU - 谁使用? 用户 us sy wa cpu 系统
  • 20. 谁消耗了我的CPU ? - 谁使用? 用户 us sy wa cpu 系统 IO等待
  • 21. 谁消耗了我的CPU ? - 谁使用? 用户 us sy wa ni & si cpu 系统 IO等待
  • 22. 谁消耗了我的CPU ? - 谁使用? 用户 软硬中断 us sy wa ni & si cpu 系统 IO等待
  • 23. 谁消耗了我的CPU ? - 谁使用? 用户 软硬中断 us sy wa ni & si id cpu 系统 IO等待
  • 24. 谁消耗了我的CPU ? - 谁使用? 用户 软硬中断 us sy wa ni & si id cpu 系统 IO等待 空闲
  • 25. 谁消耗了我的CPU ? - 谁使用? us sy wa ni & si id cpu 较为难改变
  • 26. 谁消耗了我的CPU ? - 祸首是谁? us sy wa ni & si id cpu
  • 27. 谁消耗了我的CPU ? - 祸首是谁? 用户空间的CPU消耗,各种逻辑运算: 函数/排序/类型转换/逻辑IO访问/… us sy wa ni & si id cpu
  • 28. 谁消耗了我的CPU ? - 祸首是谁? 用户空间的CPU消耗,各种逻辑运算: 函数/排序/类型转换/逻辑IO访问/… us sy wa ni & si id cpu 等待IO请求的完成, 此时CPU实际上空闲
  • 30. ? 如何减少 CPU 消耗 - 减少等待
  • 31. 如何减少 CPU 消耗 ?- 减少等待 us sy wa ni & si id cpu 减少IO量: SQL/Index/… 注:以往大多数关于数据库优化的资料都是解决io等待问题
  • 32. 如何减少 CPU 消耗 ? - 减少等待 us sy wa ni & si id cpu 减少IO量: SQL/Index/… 提升 IO 处理能力: 加Cache/加磁盘/SSD… 注:以往大多数关于数据库优化的资料都是解决io等待问题
  • 33. ? 如何减少 CPU 消耗 - 减少计算
  • 34. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量
  • 35. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量 • 减少逻辑IO量
  • 36. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量 • 减少逻辑IO量 • 减少Query请求量
  • 37. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量 ① 避免使用函数:将运算转移至易于扩展的应用服务器中 如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数
  • 38. 如何减少 CPU 消耗 ?- 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量 ① 避免使用函数:将运算转移至易于扩展的应用服务器中 如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数 ② 减少排序:利用索引取得有序数据或避免不必要排序 如 union all代替 union,order by 索引字段等
  • 39. 如何减少 CPU 消耗 ?- 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量 ① 避免使用函数:将运算转移至易于扩展的应用服务器中 如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数 ② 减少排序:利用索引取得有序数据或避免不必要排序 如 union all代替 union,order by 索引字段等 ③ 禁止类型转换:使用合适类型并保持传入参数类型与数据库字段类型绝对一致 如数字就是用tinyint/int/bigint等,必需转换的在传入数据库之前就在应用中转好
  • 40. 如何减少 CPU 消耗 ?- 减少计算 us sy wa ni & si id cpu • 降低逻辑运算量 ① 避免使用函数:将运算转移至易于扩展的应用服务器中 如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数 ② 减少排序:利用索引取得有序数据或避免不必要排序 如 union all代替 union,order by 索引字段等 ③ 禁止类型转换:使用合适类型并保持传入参数类型与数据库字段类型绝对一致 如数字就是用tinyint/int/bigint等,必需转换的在传入数据库之前就在应用中转好 ④ 简单类型:尽量避免使用复杂类型,降低由于复杂类型带来的附加运算 ⑤ …
  • 41. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少逻辑IO量 ① Index:优化索引,减少不必要的表扫描 如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里
  • 42. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少逻辑IO量 ① Index:优化索引,减少不必要的表扫描 如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里 ② Table:合理拆分,适度冗余 如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”,更多详见这里
  • 43. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少逻辑IO量 ① Index:优化索引,减少不必要的表扫描 如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里 ② Table:合理拆分,适度冗余 如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”,更多详见这里 ③ SQL:调整SQL写法,充分利用现有索引,避免不必要的扫描,排序及其他运算 如减少复杂Join,减少order by,尽量union all,避免子查询等,更多详见这里
  • 44. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少逻辑IO量 ① Index:优化索引,减少不必要的表扫描 如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等,更多详见这里 ② Table:合理拆分,适度冗余 如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”,更多详见这里 ③ SQL:调整SQL写法,充分利用现有索引,避免不必要的扫描,排序及其他运算 如减少复杂Join,减少order by,尽量union all,避免子查询等,更多详见这里 ④ 数据类型:够用就好,减少不必要的一味使用大字段 如 tinyint够用就别总是int,int够用也别老bigint,date够用也别总是替mestamp ⑤ …
  • 45. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少Query请求量(非数据库本身) ① 适当缓存:降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存 如用户信息,商品信息等等
  • 46. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少Query请求量(非数据库本身) ① 适当缓存:降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存 如用户信息,商品信息等等 ② 优化实现:尽量去除不必要的重复请求 如禁止同一页面多次重复请求相同数据的问题,通过跨页面参数传递减少访问等
  • 47. 如何减少 CPU 消耗 ? - 减少计算 us sy wa ni & si id cpu • 减少Query请求量(非数据库本身) ① 适当缓存:降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存 如用户信息,商品信息等等 ② 优化实现:尽量去除不必要的重复请求 如禁止同一页面多次重复请求相同数据的问题,通过跨页面参数传递减少访问等 ③ 合理需求:评估需求产出比,对于产出比极端低下的需求合理去除 ④ …
  • 48. Q&A OTN China Tour 2012 @简朝阳 平安金融科技