Mysql系列(十四)—Msql之性能调优
性能调优此次讨论不包含数据库sql本身的调优,更多偏向环境以及参数设置,具体包含一下几个层面:
- 选择合适的CPU
- 内存的重要性
- 硬盘对数据库性能的影响
- 合理的设置RAID
选择合适的CPU
首先要明确数据库的应用类型,一般分为两大类,OLTP(在线事务处理)、OLAP(在线分析处理)。Innodb存储引擎一般都应用于OLTP的数据库应用,这种应用的特点如下:
- 用户操作的并发量大
- 事务处理的时间一般较短
- 查询的语句比较简单,一般都走索引
- 复杂查询较少
可以看出OLTP本身对CPU的要求并不是很高,因为复杂的查询可能需要执行比较、排序、连接等非常消耗CPU的操作,这些操作在OLTP的数据库应用中很少发生。可以说OLAP是CPU密集型的操作,而OLTP是IO密集型的操作。若CPU是多核,那么可以通过参数innodb_read_io_threads和innodb_write_io_threads来增大IO的线程,这样也能更充分的利用CPU的多核性能。
内存的重要性
如下图:数据和索引总大小为18GB,然后将缓冲池的大小分别设为2、4、6、8、10、12、14、16、18、20、22GB。可以发现,随着缓冲池的增大,测试结果TPS会线性增长。当缓冲池增大到20GB和22GB时,数据库的性能有了极大的提高,因为这时所有的数据都可以放在缓冲池中,所有的操作都在内存中进行的。
硬盘对数据库性能的影响
传统的机械硬盘由于其设计的原理,使得顺序访问的速度要远高于随机访问。传统数据库的很多设计都充分的利用了顺序访问的特性。固态硬盘提高了很高的IOPS特性,有着超高的随机读取性能,可以提高数据库的整体性能。
合理的设置RAID
通过合理的设置RAID(独立磁盘冗余数组)也可以提高访问的性能。基本思想就是把多个相对便宜的硬盘组合起来,成为一个磁盘数组,使其性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据不同磁盘的组合方式,常见RAID的组合方式分为RAID0、RAID1、RAID5、RAID10、RAID50.