分库发表

1. 按数量切分,1 ~ 1000的存在第一张表,1001 ~ 2000存在第二张表;
2.按时间切分,比如:2019年1月份存在第一张表,2019年2月份存在第二张表;

3.还可以按照id的哈希值进行切分,等等等等

 

一.水平切分需要路由
既然数据已经水平切分,那么数据就保存在不同的表中,如果有新的请求要求访问数据库,那么怎么从多个表中找到对应的数据呢?

答案就是:路由。

那么问题来了,什么是路由?

通过分库分表规则查找到对应的表和库的过程叫作路由。简单的说,路由就是映射表,你想查什么,告诉它,它会告诉你数据在哪。
例如,分库分表的规则是user_id % 4,当用户新注册了一个账号时,假设用户的ID是123,我们就可以通过123 % 4 = 3确定此账号应该被保存在User3表中。那么以后当ID为123的用户登录时,我们可通过123 % 4 = 3计算,确定其被记录在User3中。

针对数据量巨大的单张表(比如订单表),按照某种规则(时间,HASH取模等),切分到多张表里面去。 但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈。不建议采用。

 

posted @ 2021-07-21 09:55  小蚊子大人KN  阅读(25)  评论(0编辑  收藏  举报