9.1 选择合适的CPU
数据库应用分为两类,OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理)
InnoDB一般都用于OLTP,这种应用有如下特点:
- 用户操作的并发量大
- 事务处理的时间一般都比较短
- 查询的语句较为简单,一般都走索引
- 复杂的查询较少
可以看出OLTP应用对于CPU要求并不高,因为复杂的查询可能需要执行比较、排序、连接等非常耗CPU的操作,这些操作在OLTP的数据库应用中很少发生。因此,可以说OLAP是CPU密集型操作,而OLTP是IO密集型的操作。
为了获得更多内存的支持,CPU必须支持64位的应用。
从InnoDB存储引擎的设计架构上来看,其主要的后台操作都是在一个单独的MASTER THREAD中完成的,因此并不能很好的支持多核的应用。不过新的InnoDB Plugin版本在各种测试下已经显示对多核CPU的处理性能有了极大的提高。所以,CPU支持多核,选择InnoDB Plugin更好,且可以修改参数Innodb_read_io_threads 、 innodb_write_io_threads来增大IO的线程,更充分利用CPU的性能
内存的重要性
innoDB会缓存数据、索引在缓存池中,所以,内存的大小对于性能影响很大

所以,在开发应用时,预估“活跃”数据库大小可能会是多少,由此确定服务器内存的大小。
可以通过以下数据判断内存是否达到瓶颈,通常InnoDB缓冲池命中率不应该小于99%

当然,内存足够大,依然会有脏页异步写入磁盘,事务提交写入重做日志文件等IO操作。
9.3 硬盘对数据库性能的影响
9.3.1 传统机械硬盘
- 可以将多块硬盘组成RAID来提高数据库的性能
- 或者将数据文件分布在不同硬盘来达到访问负载的均衡
9.3.2 固态硬盘
- 更好的支持随机访问
-
更新数据需要耗时的擦除操作
所以固态硬盘读写速度不对称,读取速度远快于写入速度。这一点需要好好利用。
双通道的固态硬盘架构
访问延迟对比
9.4 合理地设置RAID
RAID(Redundant Array of Independent Disks,独立磁盘冗余数组)的基本思想,就是把多个相对便宜的硬盘组合起来,成为一个磁盘数组,使性能达到甚至超过一个价格高昂容量巨大的硬盘。作用如下:
- 增强数据集成度
- 增强容错功能
- 增加处理量或容量
常见的RAID组合方式可分为 RAID 0,RAID 1,RAID 5,RAID 10和RAID 50等
(1)RAID 0:将多个磁盘合并成一个大硬盘,不会有冗余,并行IO,速度最快,但是数据不安全,且速度会随边际递减。
(2)RAID 1:两组以上的N个磁盘相互作为镜像,在一些多线程系统中有很好的读取速度,但是写入速度略有降低,除非主磁盘和镜像同时损坏,不然依旧可以继续运行,所以可靠性最高。
(3)RAID 5:是一种存储性能、数据安全和存储成本兼顾的存储解决方案。不做备份,而是把数据和奇偶校验信息分开存储到不同的磁盘,发生损坏时,利用校验信息和剩余数据修复损坏的数据。读取速度与RAID 0相近,但是多了奇偶校验信息,所以写入速度相当慢
(4)RAID 10和 RAID 01:RAID 10 是先镜像再分区。RAID 10读取速度不错,而且比RAID 0有着更高的数据保护性。RAID 01 先分区再镜像,RAID 01比 RAID 10读写速度更快,但也多了不可用的概率
(5)RAID 50:也称为镜像阵列条带,由至少6块硬盘组成,像RAID 0一样,数据备份区成条带,像RAID 5一样,以数据的校验来保证数据安全且校验条带分布在各个磁盘上,旨在提高RAID 5的读写性能。
RAID 10是最好的选择,但是一个磁盘失效时,性能会收到很大的影响。
9.4.2 RAID Write Back功能
先将数据放在缓存中,延迟写入磁盘,提高性能,但是需要防止故障时损坏数据。
对此,大部分的硬件RAID卡都提供了电池备份单元
。
9.4.3 RAID 配置工具
9.5 操作系统的选择也很重要
除了linux外
Solaris也是个不错的选择
Windows下需要注意表名不区分大小写
9.6 不同的文件系统对数据库性能的影响
9.7 选择合适的基准测试工具
待看
网友评论