分库
①什么时候考虑分库?
- 单台DB的存储空间不够
- 随着查询量的增加单台数据库服务器已经没办法支撑
②分库解决的问题
其主要目的是为突破单节点数据库服务器的I/O 能力限制,解决数据库扩展性问题。
③分库实现的方式
- 垂直拆分
把系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中。
按照业务垂直拆分。比如:可以按照业务分为资金、会员、订单三个数据库。
需要解决的问题:跨数据库的事务、join查询等问题。
- 水平拆分
例如,大部分的站点。数据都是和用户有关,那么可以根据用户,将数据按照用户水平拆分。
按照规则拆分,一般水平库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分。需要解决的问题:数据路由、组装。
- 读写分离
对于时效性不高的数据,可以通过读写分离缓解数据库压力。需要解决的问题:在业务上区分哪些业务是允许一定时间延迟的,以及数据同步问题。
