数据库分表自增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我们也能查询出对应的记录。
............................................................................................................................................
以上个人见解,仅供参考,不足之处请多指教。
............................................................................................................................................
最新文章
- maven-shade-plugin
- Mysql学习笔记(四)字符串函数
- cocos2d-html5 笔记5: 事件
- 应用越来越广泛的css伪类
- java学习之反射
- FORM提交请求后自动打开输出EDITOR_PKG.REPORT
- 003 爬虫持久化的三个不同数据库的python代码
- 【安卓进阶】LiveData
- FireFox 插件xpi文件签名2
- M25P16中文版
- Ubuntu18.04 VMwareTools安装方法
- EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中
- WorkerMan源码分析 - 实现最简单的原型
- Android 演示 ViewPager
- webservice(草稿)
- spring ioc和aop的理解
- MYSQL系列之(二)
- MyBatis学习笔记(一)
- C语言入门学习和整理 1-3
- FTPHelper-封装FTP的相关操作
热门文章
- 为什么首次ping丢包
- Eureka详解系列(四)--Eureka Client部分的源码和配置
- JavaScript里处理数组的一些常用方法
- GPLT L2-010 排座位 (并查集)
- BZOJ1396 识别子串【SAM+SegmentTree】
- 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛(8/11)
- hdu3938 Portal
- C++快读
- Codeforces Round #653 (Div. 3) B. Multiply by 2, divide by 6 (数学)
- PowerShell随笔2---初始命令