1、为什么读写分离为什么能够提高效率?因为master需要与slave同步,这意味着在master所执行的(写)的所有语句,都会在slave被执行一遍,这不是等于slave与master的负荷与读的效率是一致的吗?
A:分摊读取。假如我们有1主3从,不考虑上述1中提到的从库单方面设置,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白了就是拿机器和带宽换性能。MySQL官方文档中有相关演算公式:官方文档 见6.9FAQ之”MySQL复制能够何时和多大程度提高系统性能“
补充,MySQL复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器挂了后能通过调整另外一台从库来以最快的速度恢复服务,因此不能光看性能,也就是说1主1从也是可以的。
2、读写分离怎么保证一致性
读写分离一般保证最终一致性(paxos算法),可以参考淘宝OceanBase的做法