学习笔记
时间类型 建议 long类型 10 秒级 13 毫秒级
分库分表
为什么不用自增ID 而使用业务主键
- 防止竞争对手拆解出增长数据
业务主键采用雪花算法
雪花算法 = 时间戳 + pub + 机器码 + 计数器
pub:分表的时候使用当关联关系字段用
分表分少了怎么办?
假设之前有两个表 user0 user1 分配算法为 uid%2 据进入 user0 user1
- 给当前库建立从库,然后断开主从关系
- 这样另一库就有了 user0(user2) user1 (user3) (注意顺序)
- 更改数据分配的逻辑
- uid % 4 数据进入 user0 user1 user2 user3
- 可以慢慢把多余的数据清理掉。
这里最主要的一点是必须按照原分表的倍数去分,这样才有数据冗余,数据可以不丢失。
PS:这里有点疑惑,操作复杂。 重新整理 (不间断服务)
- 给当前库建立从库,然后断开主从关系
- 这样另一库就有了 user0 user1 ,拷贝user0 为user2 user1为user3
- 再让从库连接主库
- 程序里: 再修改分表的取模逻辑,数据库的主库连接修成到从库上。 再整理 (断开服务)
- 主库复制 拷贝user0 为user2 user1为user3
- 修改 uid % 4
- 恢复服务
- 清理表中冗余数据(可选)
只保留30天记录怎么做?
按月分表,1个月存2个月的记录,这个月的记录也保存在下一个月里