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