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中。