垂直拆分
注意:文章是结合自己项目场景,已经所看到数据参考而成,供大家参考。
- 1.为什么垂直拆分?
- 2.垂直拆分利与弊
为什么垂直拆分?
描述:当业务剧增时,特别是写操作非常频繁。
此时脑子中会灵光一闪 :
主从复制,读写分离
其实是可以暂时解决一部分问题,把一小部分读操作交给从服务器了。
但是效果可能并不明显。
Why?
此时如果写操作达到了70-80%,那么大部分时间 是 从服务器 在同步 主服务器 的数据。
并没有充分利用到从服务器。 而且读的服务器资源也没有全部利用。
如果此时还继续增加服务器的话,其实是回报越来越小(因为增加从服务器的话,只是对读操作分散,没有解决根本问题)。
PUSH PUSH PUSH
用户活动更加频繁,写操作更加密集,更加频繁。主服务器压力逼近极限值。此时怎么办了?
有一个好的办法就是对写操作进行 分散,分散,分散。
专业解答是:将原来放在一个数据库中,独立到不同的数据库且分布到不同服务器上。
比如:房源信息发布模块,有二房东发布房源,普通用户发布信息 .如果按照垂直拆分的话。就是二房东发布房源模块,普通用户发布房源模块。
垂直拆分利与弊
优点:
- 分散写数据的压力.
- 模块之间改动相互不影响。
- 业务清晰
缺点:
- 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。
- 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。
but:
如果:二房东也出现了无法承受写操作怎么办?
参考链接:
数据库垂直拆分 水平拆分