1、分库分表基础理论(一)

发布时间 2023-04-03 23:40:41作者: 爱文(Iven)

在高性能系统的要求下,复杂的系统当单表数据量增加到几千万甚至上亿条记录时,查询延迟无疑是影响高性能系统的瓶颈。业内提供的解决的方案是分库分表,冷热数据分离。

一、分库分表:

1、垂直分片:

按照业务维度将表拆分到不同的数据库,专库专用,分担数据库压力

 

2、水平分片:

1)、水平分库

以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。

每个库的结构都一样;数据都不一样;所有库的并集是全量数据;

2)、水平分表

以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。

每个表的结构都一样;数据都不一样;所有表的并集是全量数据;

 

 

二、数据分片方案:

1、Hash取模分片:

​ id%10 = 1 --> database 1 分片键

​ id%10 = 2 --> database 2

1)、优点:数据存放比较均匀

​(2)、缺点:当模数扩容时,需要大量的数据迁移

2、数值范围分片:

​ 1月份 --> database 1

​ 2月份 --> database 2

1)、优点:扩容不需要数据迁移

​(2)、缺点:可能存在某范围内数据激增,产生数据倾斜

3、根据业务场景,灵活制定分片策略:

​ 整体按照范围分片,保证扩容时,数据不需要迁移;范围内按照取模分片,使数据分布均匀

 

三、分库分表需要解决的问题:

​1、主键唯一性问题

​2、分布式事务问题

​3、SQL路由问题

​4、结果归并问题

数据持续高速增长,读多写少,查询逻辑固定的场景下更合适分库分表。

注:阿里提出,尽量不要分库分表;

 

参考