尽管mysql 5.6和mariadb 10.x在replication上已经做了不少优化,tokudb 7.5也做了一个"进一步"的优化:read free replication(rfr),目的是提高备库(slave)重放速度,减少主备延迟。
rfr的原理比较简单:就是避免一些"不必要"的读来减少read io。
<b>read io</b>
当在slave上执行:update/delete操作的时候,mysql进行read-modify-write操作,可能会产生read io操作,而insert的时候如果需要做"唯一性"检查,也可能会产生read io。
什么条件下,tokudb才可以read free呢?
主库配置必须binlog_format=row
主库上的操作不能违反唯一性约束(比如设置了"unique_checks=off",否则主备同步会停止),这样到tokudb备库的所有log event都默认不需要再做"unique check"
备库只读
同时满足以上3个条件,tokudb的备库认为从主库过来的insert/update/delete log event均是安全的,可以不做read,直接做write操作。
进一步的优化还在继续,希望"妈妈"(dba)再也不用担心我(read only slave)的性能了。