9.1 什么限制了MySQL的性能?

9.2 如何为MySQL选择CPU?

9.2.1 哪个更好:更快的CPU还是更多的CPU

9.2.2 CPU架构

9.2.3 扩展到多个CPU核心

两种类型的数据库并发问题:

  • 逻辑并发问题:应用程序可以看到资源的竞争,如表或行锁的争用
  • 内部并发问题:信号量,访问InnoDB缓冲池页面的资源争用,等等

频率调整

boost技术

9.3 平衡内存和磁盘资源

9.3.1 随机IO和顺序IO

9.3.2 缓存,读和写

缓存的好处:

  • 多次写入,一次刷新(刷盘)
  • IO合并

9.3.3 工作集是什么

工作集的大小取决于应用程序

工作集可以定义为基于时间的百分比。

对于读取的某一行,InnoDB读取它所在的整个页,这会有额外的内存开销。

9.3.4 找到有效的内存/磁盘比例

缓存命中率实际上也会决定是用来多少CPU,所以评估缓存命中率的最好方法是查看CPU使用率。 如果CPU使用了99%的时间工作,用了1%的时间等待IO,那缓存的命中率还是不错的。

9.3.5 选择硬盘

例如,若需要快速写日志,就不能通过增加大量有效内存来避免磁盘写入。这种情况下,投资一个高性能的IO系统与带电池支持的写缓存或固态存储,可能是个更好的主意。

磁盘选取因素:

  • 存储容量
  • 传输速度
  • 访问时间
  • 主轴转速
  • 物理尺寸

复制通常在更快的驱动器上表现得更好,因为备库的更新是单线程的。

9.4 固态存储

9.4.8 使用flashcache

9.5 为备库选择硬件

备库硬件主要考虑的是成本:需要在备库硬件上花费跟主库一样多的成本吗?可以把备库配置得不一样以便从备库上获得更多性能吗?如果备库跟主库工作负载不一样,可以从不一样的硬件配置上获得隐含的收益吗?这一切取决于备库是否只是备用。

9.6 RAID性能优化

9.7 SAN和NAS

9.8 使用多磁盘卷

9.9 网络配置

9.10 选择操作系统

9.11 选择文件系统

9.12 选择磁盘队列调度策略

9.13 线程

9.14 内存交换区

9.15 操作系统状态