怎么做熊掌号网站羊毛网站建设视频
文章目录
- range策略
 - Range策略延伸
 - 基于Range范围分库分表业务场景
 
- hash取模
 - 案例规则
 
水平分库分表,根据什么规则进行划分?
range策略
自增id,根据ID范围进行分表(左闭右开)
规则案例:
- 1~1,000,000 是 table_1
 - 1,000,000 ~2,000,000 是 table_2
 - 2,000,000~3,000,000 是 table_3
… …省略 
优点:
- id是自增长,可以无限增长
 - 扩容不用迁移数据
 - 容易理解和维护
 
缺点:
- 大部分读和写都访会问新的数据,有IO瓶颈,整体资源利用率低
 - 数据倾斜严重,热点数据过于集中,部分节点有瓶颈
 
Range策略延伸
范围角度思考
 数字:
 1.自增id范围
时间:
 1.年、月、日范围
 2.比如按照⽉份⽣成 库或表 pay_log_2022_01、pay_log_2022_02
空间:
 1.地理位置:省份、区域(华东、华北、华南)
 2.比如按照 省份生成库或表
基于Range范围分库分表业务场景
-  
微博发送记录、微信消息记录、⽇志记录,id增长/时间分区 都行
水平分表为主,水平分库则容易造成资源的浪费 -  
网站签到等活动流水数据时间分区最好
水平分表为主,水平分库则容易造成资源的浪费大区划分(⼀⼆线城市和五六线城市活跃度不⼀样,如果能避免热点问题,即可选择) -  
saas业务水平分库(华东、华南、华北等)
 
hash取模
Hash分库分表是最普遍的方案
案例规则
用户ID是整数型的,要分2库,每个库表数量4表,⼀共8张表
 用户ID取模后,值是0到7的要平均分配到每张表
库ID = userId % 库数量(2)
表ID = userId / 库数量(2) % 表数量(4)
优点:1.保证数据较均匀的分散落在不同的库、表中,可以有效的避免热点数据集中问题
 缺点:1.扩容不是很方便,需要数据迁移
