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

千里之行,始于足下

 


正文

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

回到顶部

一、分库分表:

回到顶部

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、结果归并问题

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

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

 

参考

posted on   爱文(Iven)  阅读(33)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示

目录导航