(1)前序:
    服务器使用多块磁盘组成的RAID阵列的时候,一般会有一个RAID卡,这个RAID卡是带有一个缓存的,这个缓存不是直接用服务器的主内存的那种模式,它是一种跟内存类似的SDRAM,当然也可以认为是基于内存来存储的。
    我们把RAID的缓存模式设置为write back,这样所有写入磁盘阵列的数据,先换缓存在RAID卡的缓存里,后续慢慢写入磁盘阵列里,这种写缓冲机制,可以大幅提升数据库磁盘写的性能。

    (2)为什么RAID架构需要电池充放电?
    因为上面介绍磁盘写的时候是写入了RAID的SDRAM缓存里的,如果突然断电或者服务器故障,RAID卡缓存里的数据会丢失,MySQL磁盘写入的数据就没了。
    所以为解决这个问题,RAID卡一般都配置有自己独立的锂电池或者电容,如果服务器突然断电,无法接通电源,RAID卡自己是基于锂电池来供电运行的,他会赶紧把缓存里的数据写入到阵列中的磁盘,但是锂电池存在性能衰减,会定期进行充放电,每隔30~90天(不同厂商的不同)。
    在充放电过程中,RAID的缓存级别会从write back变成write through,这样直接写入磁盘,性能会退化10倍。
    所以这时候一旦RAID锂电池充放电,会导致你数据库服务器的RAID存储定期的性能出现几十倍抖动,间接导致你的数据库每隔一段时间出现性能几十倍抖动。

    锂电池充放电的时候不把缓存级别从write back修改为write through,意味着在充放电的时候机器一旦宕机就有可能丢失数据。
    92095600_1583342223.jpg