读写分离架构

读写分离的原理

读写分离是让主库处理事务性增删改,而从库处理查操作。数据库复制来把事务性操作的数据变更同步到从库。

读写操作有不同的实现方式,往往写操作更耗时,读操作在架构角度则有更多的选择,所以读写分离是架构及系统优化很重要的一种手段。

分区

分区是将持久化数据文件划分成多个小块,根据一定的规则把文件和索引进行分割,分区后的表还是一张表,但是在真是场景中mysql分区使用很少,分区往往用在一些其他大数据中间件下,如hbase,hdfs等,mysql的读解决方案常见的有分表和分库解决方案。

分表

当数据量达到一定程度后,导致处理性能不足,或者如果表中字段冷热数据比较明显,可以采用分表处理。就是把数据字段按照某种分表原则拆分到多个表中,这样可以把大表变成小表,不同小表中数据不重复,从而提高处理效率。

分库

分区和分表是对数据的拆分,对数据库性能有一定的提升,但是当数据发展到一定程度后,单纯的分表无法解决并发请求访问同一个数据库,此时数据库的瓶颈可能到了如网络IO,文件IO,CPU,内存上,这样造成单台服务器的容量,QPS、TPS接近或超过了单个数据库实例处理极限,此时往往采用垂直和水平结合的方式拆分数据,把数据存储服务拆分到多台数据库服务器上。

读写分离架构

主库负责写,从库负责读,一主多从,从而实现读写分离,最后可以依赖其他中间件对于读写两种场景特点进行优化,比如引入redis等缓存中间件或搜索引擎优化查询,引入mq机制优化写操作,降低后端数据库压力。

读写分离实现

分库分表实现方式类似,讲经常访问和不经常访问的字段拆分到不同的库表中。

以水平拆分为例

水平拆分是根据分片算法讲一个库表拆分到多个库表中,如按照ID最后一位对3取余,尾数是1的放到第一个库表,尾数是2的放到第二个库表。

转载于:https://my.oschina.net/u/1000241/blog/2239803

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值