今天突然想到一个问题,而后有一些疑问,希望各位道友予以解惑!
一般来说,当并发到一定程度,单台的Mysql服务器承受不住的时候,会做主从来缓解压力。而主从的原理就是Master端在执行查询的时候,会生成bin-log日志,然后Master会把bin-log日志同步到Slave端,然后Slave端执行bin-log日志,来实现主从的数据复制,而这时候,我们可以把读的操作指向Slave端,从而分解,降低Master端的压力。
我的疑问是这时候Master端写的压力与Slave端写的压力是否变化不大,当然,前提是我们忽略主从同步所带来的那几秒延迟与误差。因为Master的写操作,生成bin-log,然后同步到Slave端,Slave端执行bin-log其实也是一个执行写操作的过程,当我们忽略那几秒误差与延迟的前提下,它的写压力是不是变化也不会太大。另外,Master执行查询与Slave端执行bin-log里面的查询,有没有什么区别?或者说执行bin-log比直接执行SQL语句效率要高?
1、从原理上来说,Master端的写压力一般要大于Slave端,不过还得看你是结构。
2、SQL查询通过解析器、优化器、创建执行计划,执行,输出;bin-log还要实现对磁盘的IO操作,解析SQL,再重复SQL的执行过程,所以从效率上来说,普通sql的效率要高些。
3、如果想解决数据同步和数据备份,可以考虑使用MySQL集群,不过成本就要高很多。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。