MySQL数据库中怎么调节磁盘IO调度算法
发布时间:2022-01-20 14:15:24 所属栏目:MySql教程 来源:互联网
导读:MySQL数据库中怎么调整磁盘IO调度算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 查看当前系统支持的磁盘IO调度算法 [root@alpha-mongo-140-52 ~]# dmesg | grep -i scheduler io
MySQL数据库中怎么调整磁盘IO调度算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 查看当前系统支持的磁盘IO调度算法 [root@alpha-mongo-140-52 ~]# dmesg | grep -i scheduler io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) default代表当前设备使用的缺省的IO调度算法 也可以用以下命令查看: [root@test ~]# more /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] 备注:括号里括起来的即为当前调度算法值 修改当前块设备使用的io调度算法为deadline: [root@test ~]# echo "deadline" > /sys/block/sda/queue/scheduler 备注:修改立即生效 [root@test ~]# more /sys/block/sda/queue/scheduler noop anticipatory [deadline] cfq 调度算法介绍: Linux有四种IO调度算法,分别为完全公平队列算法(Complete Fair Queuing/CFQ), NOOP算法(No Operation),最后期限算法(Deadline)和预期算法(anticipatory). 完全队列公平算法把磁盘I/O请求按照进程分别放入进程对应的队列中。CFQ的公平是针对进程而言的,每一个提交I/O请求的进程都会有自己的I/O队列,CFQ以时间片算法为前提,轮流调动队列,默认当前队列中取出4个请求来处理,然后接着处理下一个队列里的4个请求,确保每个进程享有的IO资源是均衡的。CFQ是Linux默认的I/O调度算法。 NOOP算法是不对I/O请求排序,除了合并请求也不会进行其他任何优化,用最简单的先进先出队列顺序提交I/O请求,NOOP算法面向的主要是随机IO访问设备SSD等。 最后期限算法(Deadline)除了维护了一个拥有合并和排序功能的请求队列外,额外维护了两个队列,分别是读请求队列和写请求队列,他们都是带有超时的请求队列,当新来一个IO请求时,会被同时插入普通队列和读写队列,然后I/O调度器正常处理普通队列中的请求。当调度器发现读写请求队列中的请求超时的时候,会优先处理这些请求,保证尽可能不产生饥饿请求。对于MYSQL来说,建议设置为Deadline,对MYSQL来说是很好的调度算法。 预期算法(anticipatory)是基于预测的I/O算法,它和Deadline类似,也维护了三个请求队列,区别在于,预期算法处理完一个IO请求后并不会直接返回处理下一个请求,而是等待默认6秒,等待期间如果有新进来的相邻扇区的请求,会直接处理新来的请求,当等待6秒结束后,调度才返回处理下一个队列请求。anticipatory适合写多读少的环境,不适合MySQL等随机读取较多的数据库环境。 看完上述内容,你们掌握MySQL数据库中怎么调整磁盘IO调度算法的方法了吗? (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐