我看了一些文章,使用master/slave模式实现读写分离以提高mysql性能
实现方式是web server向master写,master与slave同步,然后web server从slave上读
我不明白这种方式为什么会提高性能?因为master需要与slave同步,这意味着在master所执行的(写)的所有语句,都会在slave被执行一遍,这不是等于slave与master的负荷与读的效率是一致的吗?
是读写方式的实现方式我理解错了,还是有我没有搞懂的地方?请赐教,谢谢!
我看了一些文章,使用master/slave模式实现读写分离以提高mysql性能
实现方式是web server向master写,master与slave同步,然后web server从slave上读
我不明白这种方式为什么会提高性能?因为master需要与slave同步,这意味着在master所执行的(写)的所有语句,都会在slave被执行一遍,这不是等于slave与master的负荷与读的效率是一致的吗?
是读写方式的实现方式我理解错了,还是有我没有搞懂的地方?请赐教,谢谢!
你应该这么理解,有多台slave过后,被并发访问到的次数要少些,建立的连接次数要少些,所以快些。如果5000次请求来了,你说都访问主服务器,那么一台的压力是5000,如果分到10台小的上面,每台才500, 还有,我估计主服务器没有设置索引,因为只对它写,如果建索引,插入,修改和删除的速度会受到影响,反正主服务器也不做查询操作,不要索引或者少建索引,写的效率可能会更高。
可以参考一下这个讨论:
http://www.itpub.net/thread-1184103-1-1.html
主要是这几点:
我所知道的两个方面:
补充,MySQL复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器挂了后能通过调整另外一台从库来以最快的速度恢复服务,因此不能光看性能,也就是说1主1从也是可以的。
4 回答13.2k 阅读✓ 已解决
5 回答7.7k 阅读✓ 已解决
6 回答2.8k 阅读
2 回答7.4k 阅读✓ 已解决
2 回答6.6k 阅读✓ 已解决
1 回答5.2k 阅读✓ 已解决
1 回答5k 阅读✓ 已解决
1.物理服务器增加,负荷增加
2.主从只负责各自的写和读,极大程度的缓解X锁和S锁争用
3.从库可配置myisam引擎,提升查询性能以及节约系统开销
4.至于你提到的“master所执行的(写)的所有语句,都会在slave被执行一遍”这个只说对一半,从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的。
5.读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。 对于写和读比例相近的应用,应该部署双主相互复制。