分库分表
一、分库分表概念
首先,需要指出的是分库分表会带来更高的复杂度,涉及分布事务,跨库联表,性能下降,配置复杂等问题,不到万不得以不要轻易使用。另外,使用分库分表依据评估3年内的数据量及数据增长趋势,来提前进行分库分表规划,而不是对已有的生产库进行临场变动。
1. 分库分表的原因
单机数据库所能承载的数据有限,且达到一定量时,性能会急速下降,无法正常使用。如果数据确实需要依赖关系型数据库,那么就必须考虑使用分库分表。
2. 分库和分表是正交概念
分库分表的核心概念是专库专用,提前规划好分库分表的规则。分库和分表是两个正交的概念,互不影响。分库是指,把数据切分为多个库,而分表的概念是切分为多个表。例如在ShardingSphere里可以根据不同的路由规则来实现。
3. 水平切分和垂直切分
水平切分是指把表或库,依据某个规则进行水平拆分,例如把订单表按时间维度进行切分,一个年度一张表;
垂直切分是指把表或库,根据业务进行拆分,例如把商品表和SKU表分拆到不同的库;
二、分库分表优劣
分库分表的劣势:
1)复杂度提升,把单机事务膨胀为分布式事务
2)研发门槛高,运维成本大
3)有的分库分表框架可能会侵入代码
4)挎库的操作使性能较单机低
分库分表的优势:
1)打破单机容量限制,支持业务需求