假如果它的实现方式是web server向master写,master与slave同步,然后web server从slave上读。
我不明白这种方式为什么会提高性能?因为master需要与slave同步,这意味着在master所执行的(写)的所有语句,都会在slave被执行一遍,这不是等于slave与master的负荷与读的效率是一致的吗?
个人感觉可能的原因有如下几点:
1.主从只负责各自的写和读,极大程度的缓解X锁和S锁争用
2.物理服务器增加,负荷增加
3.从库可配置myisam引擎,提升查询性能以及节约系统开销
4.读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。 对于写和读比例相近的应用,应该部署双主相互复制。
5.至于你提到的“master所执行的(写)的所有语句,都会在slave被执行一遍”这个只说对一半,从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的。