raid write back / write throught
RAID write back指的是raid控制器能够将写入的数据写入自己的缓存中,并把它们安排到后续再执行,这样做的好处就是不需要等实际写入磁盘再返回,因此写入更快。对于数据库而言,这一点更为重要,对重做日志的写入,sync_binlog为1的情况下二进制日志写入,脏页的刷新等,都可以有很大的提升。
但是这样有个弊端就是系统发生意外,数据还在缓存中没有写入磁盘。大多数硬件RAID提供了电池备份单元,因此可以放心的开启write back。
如果没有开启write back,那么控制器现实就是write through,即直接写入到磁盘,不会先写入自己的缓存,但是安全性是最高的。
write-through
数据在写入存储的同时,要写入缓存,这种方式安全但是会牺牲写性能,因为只有等数据完全落入硬盘后,才算是一次io完成,这个过程会造成cpu的iowait。
write-back
数据直接写入缓存,写缓存的速度是远远大于写磁盘的,所以这种方式可以提高服务器的写性能。也许你会想当断电了怎么办?不用担心,raid卡是有电池的,完全可以支持缓存中的数据再写入磁盘。除非点背,raid卡电池也没电了。(具体什么时候缓存中的数据会写入硬盘,这个我不是很清楚)
我们生产环境用的就是write-back,就是并且还设置了force write-back (即使电池没电了,也要写缓存),这样有了点冒险,但是大幅度的提高了写性能,我觉得利大于弊吧。具体的设置如下图: