磁盘访问模式
顺序访问:逻辑上顺序访问磁盘上的块
随机访问:随机访问磁盘上的块
磁盘的分类
HDD(机械硬盘):机械硬盘主要由磁头和磁盘组成,磁头是机械硬盘读写数据的关键部分。当机械硬盘工作时,磁头会在磁盘旋转时写入磁道数据或者读取已有的数据。
SSD(固态硬盘):基于闪存的固态硬盘是固态硬盘的主要类别,其内部构造十分简单,固态硬盘内主体其实就是一块PCB板,而这块PCB板上最基本的配件就是控制芯片,缓存芯片(部分低端硬盘无缓存芯片)和用于存储数据的闪存芯片。
SSD的数据库优化
磁盘调度算法设置为deadline 或 noop
InnoDB存储引擎参数设置(根据实际情况调整大小)
innodb_flush_neighbors=0 -- 控制刷新
innodb_log_file_size=8G -- 控制日志大小
Deadline
算法的优点和缺点
优点
- 减少延迟: 由于请求的截止时间得到保证,
Deadline
可以有效减少高负载下的 I/O 延迟。 - 防止饥饿:
Deadline
确保所有请求在一定时间内都会得到处理,避免了长时间的饥饿现象。 - 适用于混合负载:
Deadline
适用于各种类型的负载,包括读写混合的工作负载,能够在一定程度上提供良好的性能。
缺点
- 复杂度较高: 相比于
NOOP
等简单的调度算法,Deadline
的实现和管理较为复杂,可能会引入一定的开销。 - 不适用于所有场景: 在一些特定场景下,如高吞吐量的应用,
Deadline
可能无法提供最佳的性能。在这些情况下,可能需要更为复杂的调度算法(如CFQ
、noop
)。
NOOP
算法的优点和缺点
优点
- 低延迟: 由于没有复杂的调度算法,
NOOP
可以提供更低的调度延迟,这对 SSD 等高性能存储设备特别有利。 - 简化实现:
NOOP
算法的实现非常简单,减少了调度的开销。
缺点
- 缺乏优化:
NOOP
不对请求进行优化或重排,因此在面对高负载或复杂的 I/O 访问模式时,它可能无法充分利用存储设备的性能。 - 不适用于 HDD: 对于传统的机械硬盘,
NOOP
算法可能无法提供最佳的性能,因为这些设备依赖于调度算法来减少寻道延迟和旋转延迟。
增加日志文件大小可以减少日志刷新的频率,提升性能。日志缓冲区的增大也有助于减少写入操作。性能更平稳,可以提升大约百分之十五以上的性能。
查看目前磁盘算法
-- 修改算法
[root@my1 ~]# echo deadline > /sys/block/sda/queue/scheduler
-- 查看磁盘算法 这里sda是我的磁盘
[root@my1 ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
HDD硬盘也强烈建议设置为deadline 和 cfq差别并不大,修改完需要重启mysql,需要等待一段时间启动。