Skip to main content

学习笔记

时间类型 建议 long类型 10 秒级 13 毫秒级

分库分表

为什么不用自增ID 而使用业务主键

  1. 防止竞争对手拆解出增长数据

业务主键采用雪花算法

雪花算法 = 时间戳 + pub + 机器码 + 计数器

pub:分表的时候使用当关联关系字段用

分表分少了怎么办?

假设之前有两个表 user0 user1 分配算法为 uid%2 据进入 user0 user1

  1. 给当前库建立从库,然后断开主从关系
  2. 这样另一库就有了 user0(user2) user1 (user3) (注意顺序)
  3. 更改数据分配的逻辑
  4. uid % 4 数据进入 user0 user1 user2 user3
  5. 可以慢慢把多余的数据清理掉。

这里最主要的一点是必须按照原分表的倍数去分,这样才有数据冗余,数据可以不丢失。

PS:这里有点疑惑,操作复杂。 重新整理 (不间断服务)

  1. 给当前库建立从库,然后断开主从关系
  2. 这样另一库就有了 user0 user1 ,拷贝user0 为user2 user1为user3
  3. 再让从库连接主库
  4. 程序里: 再修改分表的取模逻辑,数据库的主库连接修成到从库上。 再整理 (断开服务)
  5. 主库复制 拷贝user0 为user2 user1为user3
  6. 修改 uid % 4
  7. 恢复服务
  8. 清理表中冗余数据(可选)

只保留30天记录怎么做?

按月分表,1个月存2个月的记录,这个月的记录也保存在下一个月里