数据库分库分表操作——假如用户注册人数过亿

发布时间 2023-06-05 17:27:29作者: 濑川一线天

如果用户注册人数过亿,数据信息量大。此时就需要考虑分库分表

单库分表

垂直拆分和水平拆分

垂直拆分

              拆分列

 水平分表——常见

       本质把大表拆分小表——Id取模分表

数据迁移问题:

如果一开始将数据预估量很大。建议根据id范围分表。——多用于分表数据不能很好扩展问题

问题:一两张分表进行频繁读写操作。其他表业务空闲的状态

所以提出分摊数据读写压力——读写热点问题

解决:将ID变的随机——使得ID随机分散到所有表上。分摊读写压力。

同时id取模分表和id范围分表

先用ID范围去分表;然后在某个id范围内引入取模的功能。

不管是单库分表还是分库分表。都要进行中间层逻辑做路由。把这部分逻辑封装起来,放在数据库和业务代码之间。比如在代码和数据库之间添加服务Proxy

 

没有什么是加中间层不能解决的

分库分表会导致读扩散问题

       一般情况下,会将数据库主键作为分片键。如果使用where条件查询除id主键以外的普通索引列。比如name。没有办法定位在哪一个分表当中,那么会进行并发遍历分表进行读扩散操作。