解决数据库自增ID的问题
(1)设置主键自增为何不可取
这样的话,数据库本身是单点,不可拆库,因为id会重复。
(2)依赖数据库自增机制达到全局ID唯一
使用如下语句:
REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
这样可以保证全局ID唯一,但这个Tickets64表依旧是个单点。
(3)依赖数据库自增机制达到全局ID唯一并消除单点
在2的基础上,部署两个(多个)数据库实例,
设置自增步长为2(多个则为实例数),即auto-increment-increment = 2
设置auto-increment-offset分别为1,2.....
这样第一台数据库服务器的自增id为 1 3 5 7 9
第二台为2 4 6 8 10
(4)解决每次请求全局ID都读库写库压力过大的问题
比如第一次启动业务服务,会请求一个唯一id为3559
如果是2、3的方法,则id为3559,这样每次都请求数据库,对数据库压力比较大
可以用3559 * 65536(举个例子,并不一定是65536)+ 内存自增变量来作为id
当内存自增变量到达65535时,从数据库重新获取一个自增id
这样即使有多台业务服务器,id也不会重复:
第一台 3559 * 65536 + 1,2,3.....65535
第二台 3560 * 65536 + 1,2,3.....65535
然后第一台到65535了,换一个数据库自增id,这时候可能是3561 * 65536 + 1,2,3....
转载于:https://www.cnblogs.com/lupeng2010/p/6628679.html
解决数据库自增ID的问题相关推荐
- 弃用数据库自增ID,曝光一下我自己用到的解决方法之---终结篇
我写这篇随笔的目的旨在 澄清我在上一篇随笔 "弃用数据库自增ID,曝光一下我自己用到的解决方法" 中的一些事实与看法,同时,我将继续在并发的问题的作题, 我将在原来的存储过程上得用 ...
- 8年面试官问到:数据库自增 ID 用完了会咋样?
有主键 如果你的表有主键,并且把主键设置为自增. 在 MySQL 中,一般会把主键设置成 int 型.而 MySQL 中 int 型占用 4 个字节,作为有符号位的话范围就是 [-2^31,2^31- ...
- MySQL分布式ID_分布式唯一ID系列(3)——数据库自增ID机制适合做分布式ID吗
数据库自增ID机制原理介绍 在分布式里面,数据库的自增ID机制的主要原理是:数据库自增ID和mysql数据库的replace_into()函数实现的.这里的replace数据库自增ID和mysql数据 ...
- mysql数据库自增_mysql数据库自增id用法大全
在mysql数据库中,使用auto_increment 字段来辅助为自增列赋值. 显示有关msyql自增ID的相关配置信息: 复制代码 代码示例: SHOW VARIABLES LIKE 'auto_ ...
- 修改自增主键初始化_数据库自增ID用完了会怎么样?
看到这个问题,我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段.回血的模式,因为魔兽的血量是int型,不能超过2^32大小. 估计暴雪的设 ...
- mysql自动增长id 溢出_MySQL表自增id溢出的故障复盘怎么解决 MySQL表自增id溢出的故障复盘解决方法...
MySQL表自增id溢出的故障复盘如何解决?本篇文章小编给大家分享一下MySQL表自增id溢出的故障复盘解决方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题:MyS ...
- mysql id会用完吗_数据库自增ID用完了会怎样?
起步 对DBA来说这应该是送分题吧.而我是突如其来的想法想测试下的.正常来说程序员是不会关心自增ID用完的情况的. 以 Mysql 为例,它支持的最大的整型是 unsigned bigint,上限是 ...
- 数据库自增id没有从0开始
/**如有错误,敬请指正**/ 在把本地数据库中的表移植到远程数据库时,遇到一个情况,由于原先的表中有数据,所以只是复制表结构输出为SQL文件,但是在远程,运行这个SQL文件,添加新的数据时,发现自增 ...
- repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...
在我们的开发过程中,经常会遇到ID生成的问题,那么这里就介绍一种解决方案,注意这里只适合混淆ID规则,也就是说生成的ID没有任何规则,不适用于订单ID. 一般有序自增主键的ID,极易被爬虫抓取数据,作 ...
最新文章
- 抖音右上角一个小黄点是什么_抖音用户更喜欢什么样的人设?抖音怎么塑造出一个受人喜欢的人设?抖音人设...
- CTFshow 命令执行 web48
- 图像中的灰度共生矩阵
- Xshell的一些实用技巧
- SAP Cloud SDK for JavaScript 概述
- SAP Cloud Application Programming CatalogService 默认的路径
- ActiveMQ在windows下启动失败解决方案
- 学习yield《转》
- PXC 安装 for 5.7
- 01_决策树案例一:鸢尾花数据分类
- 樊登读书搞定读后感_樊登读书人生定位读后感
- pyodbc 测试连接 SQL Server 数据库
- 用 CAShapeLayer、毛玻璃镂空效果创建加载动画
- virtual reality(虚拟现实)
- arduino IED2.0实现Serial.println打印结果
- 开放耳机有什么优缺点,推荐几款不错的开放式耳机
- 国内首个《超融合技术白皮书》出炉,新华三携手产业联盟成员推动全新生态建设
- 联想Y400怎么样在插入鼠标时自动禁用触摸板
- 镇魔曲手游服务器维护,网易《镇魔曲》手游好玩到紧急追开6台服务器?
- java舞会配对程序_舞会心动男/女生配对问题
热门文章
- 计算机控制技术曹立学答案,高等学校电子与电气工程及自动化专业十二五规划教材:计算机控制技术...
- spring boot中@ResponseBody等注解的作用与区别
- 进阶学习(3.4) Builder Pattern 建造者模式
- 四川网络推广浅析新站要如何更快的获得好排名?
- 网络推广外包——网络推广外包专员浅析网站流量应该如何提升?
- 浅析网站内链优化如何营造良好的内链生态环境?
- 网站开发绝不像你看到的那么简单!
- vbs画动态爱心代码_前端必看之如何用CSS3画一个八卦和爱心
- cesium面积计算_cesium-长度测量和面积测量
- docker 删除容器_Docker (二) Windows10专业版安装教程