数据库分表自增ID问题
............................................................................................................................................
假设我们对tbl进行分表:
tbl_1、tbl_2
并且tbl_1、tbl_2都使用自增ID,则可能出现自增ID重复问题:
tbl_1:
id
1
tbl_2:
id
1
............................................................................................................................................
在进行业务处理时如果根据ID修改信息则可能会导致另一张子表相同ID的数据受到影响:
update tbl
set xx='test'
where id =1 ;
............................................................................................................................................
解决方案:
1.通过修改步长并且为每张表设置不同的起始值即可实现:
tbl_1:起始位置:1、步长:2
tbl_2:起始位置:2、步长:2
则
tbl_1中的id为:1、3、5、7、9...
tbl_2中的id为:2、4、6、8、10...
这样所有的子表ID都不会出现重复
多张表同理
2.通过设置分表规则对应表也可实现:
假设
tbl_1是所有性别为男的信息
tbl_2是所有性别为女的信息
则我们可以设置一张中间表:
tbl_mid:
性别 子表名称
男 tbl_1
女 tbl_2
这样我们进行查询的时候通过性别就能确定到对应的子表,即便子表之间有重复ID我们也能查询出对应的记录。
............................................................................................................................................
以上个人见解,仅供参考,不足之处请多指教。
............................................................................................................................................
相关文章
- Shell系列(37)- while和until循环
- Shell系列(36)- for循环语法二简介及批量添加删除用户
- Shell系列(35)- for循环语法一简介及批量解压缩脚本
- Shell系列(34) - 多分支case语句简介及实例
- Shell系列(32)- 双分支if语句判断Apache服务是否启动
- Shell系列(31)- 双分支if语句简介
- Shell系列(30)- 单分支if语句判断分区使用率
- Shell系列(29)- 单分支if语句格式
- Shell条件判断(6)- 多重条件判断
- Shell系列(28)- 条件判断之字符串判断
- Shell系列(27)- 条件判断之两个整数比较
- Shell系列(26)- 条件判断之两个文件比较
- Shell系列(25)- 条件判断之文件权限
- Shell系列(24)- 条件判断之文件类型
- Shell系列(23)- 字符截取命令sed
- Shell系列(22)- 字符截取命令awk
- Shell系列(21)- 字符截取命令printf
- Shell系列(20)- 字符截取命令cut
- Shell系列(19)- 正则表达式
- Shell系列(18)- 什么是正则表达式