从开始写博客我的文章基本都偏向实用实践性.原理写的较少,调优的文章基本没有..不是不想写而是不知道从哪里写起.说起性能调优这四个字感觉宽泛广大涉及到的东西也很多.既然这次谈到性能调优了..那么就来谈谈调优需要关注哪些指标吧
首先说说IOPS(Input/Output operations Per Second,既每秒处理I/O的请求次数)
IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次IO需要多次访问存储才可以完成,这里提到磁盘读写能力,比如它每秒读100M,写50M.这个说明的是数据吞吐量,而IOPS指的则是每秒处理I/O的请求次数.详细展开来说请求次数就是读80M的文件是一次I/O请求,写1K的的数据也是一次I/O请求,那么IOPS的数值越高自然在一定时间内能接受的相应请求就越多,如果你在深入想一下也会发现这只是理论而已.因为同一个请求读80M与写1K所需要的时间自然不一样,除了寻道、数据传输等方面考虑的因素其实很多很多,那么如果IOPS够高的话,那么用在OLTP系统上会更加合适.对于如何获得IOPS的值,在Linux、Windows上都有很多工具可供测试,不过可参考的价值未必多.如果要提高IOPS,传统方案还是使用RAID条带后使I/O能力获得提升,近几年固态硬盘SSD很火热,不同厂商之间的技术指标也不尽相同,至于像Fusion-IO这种变态级的IOPS都可以干到百万级别.一般情况下用SSD基本上可以满足需求了.多块SSD条带性能还是很猛的.不过烧钱烧的多还有就是寿命问题.IOPS的计算公式IOPS=1000ms/(寻道时间+旋转延迟时间)
其次是QPS(Query Per Second,既每秒请求、查询次数)
说完IOPS在来说说数据库中非常重要的QPS,这个指标在所有数据库中都有,只不过MySQL应该更加关注.获取这个指标值也很容易在MySQL中执行status命令就可以看到了.不过这个值是在MySQL生命周期内全局指标,可我们的系统不是每时每刻都在忙碌,那么在系统峰值时QPS又是多少,我们只能自己动手算了.当我们执行status的时候有个Questions,尽管它也是全局指标.不过我们可以每隔一秒查询下这个值,并将相邻的两值相减,得到的就是精确的每一秒的实际请求数了.如果MySQL处于繁忙的状态,那么我们获取的值就可以视为MySQL QPS的峰值响应能力了.QPS计算公式:Questions/Uptime(Uptime换成自己定义的时间单位)
在其次就是TPS了(Transcantion Per Second,既每秒事务数)
至于TPS嘛..同样是衡量数据库的重要指标.不过MySQL不是每个存储引擎都支持事务.所以就拿InnoDB来说好了.TPS主要涉及提交和回滚.如果按照公式就是:TPS=(Commit+Rollback)/Seconds
最后在来说说其实性能调优还涉及到数据库的参数配置、SQL等等,不过调优本来就不是一个单纯的工作,它涉及到存储、操作系统、数据库、中间件、代码方方面面,以上提到的理论了一些.读起来也很抽象没办法..这玩意本来就抽象有形无式乃是最高境界啊
注:文章的有些内容参考自三思笔记
阅读(3512) | 评论(0) | 转发(0) |