分布式ID-数据库自增ID
第一种方案仍然还是基于数据库的自增ID,需要单独使用一个数据库实例,在这个实例中新建一个单独的表:
表结构如下:
CREATE DATABASE `SEQID`;CREATE TABLE SEQID.SEQUENCE_ID (id bigint(20) unsigned NOT NULL auto_increment, stub char(10) NOT NULL default '',PRIMARY KEY (id),UNIQUE KEY stub (stub)
) ENGINE=MyISAM;
可以使用下面的语句生成并获取到一个自增ID
begin;
replace into SEQUENCE_ID (stub) VALUES ('anyword');
select last_insert_id();
commit;
stub字段在这里并没有什么特殊的意义,只是为了方便的去插入数据,只有能插入数据才能产生自增id。而对于插入我们用的是replace,replace会先看是否存在stub指定值一样的数据,如果存在则先delete再insert,如果不存在则直接insert。
这种生成分布式ID的机制,需要一个单独的Mysql实例,虽然可行,但是基于性能与可靠性来考虑的话都不够,业务系统每次需要一个ID时,都需要请求数据库获取,性能低,并且如果此数据库实例下线了,那么将影响所有的业务系统。
为了解决数据库可靠性问题,我们可以使用第二种分布式ID生成方案。
分布式ID-数据库自增ID相关推荐
- MySQL分布式ID_分布式唯一ID系列(3)——数据库自增ID机制适合做分布式ID吗
数据库自增ID机制原理介绍 在分布式里面,数据库的自增ID机制的主要原理是:数据库自增ID和mysql数据库的replace_into()函数实现的.这里的replace数据库自增ID和mysql数据 ...
- 8年面试官问到:数据库自增 ID 用完了会咋样?
有主键 如果你的表有主键,并且把主键设置为自增. 在 MySQL 中,一般会把主键设置成 int 型.而 MySQL 中 int 型占用 4 个字节,作为有符号位的话范围就是 [-2^31,2^31- ...
- 解决数据库自增ID的问题
(1)设置主键自增为何不可取 这样的话,数据库本身是单点,不可拆库,因为id会重复. (2)依赖数据库自增机制达到全局ID唯一 使用如下语句: REPLACE INTO Tickets64 (stub ...
- 弃用数据库自增ID,曝光一下我自己用到的解决方法之---终结篇
我写这篇随笔的目的旨在 澄清我在上一篇随笔 "弃用数据库自增ID,曝光一下我自己用到的解决方法" 中的一些事实与看法,同时,我将继续在并发的问题的作题, 我将在原来的存储过程上得用 ...
- 修改自增主键初始化_数据库自增ID用完了会怎么样?
看到这个问题,我想起当初玩魔兽世界的时候,25H难度的脑残吼的血量已经超过了21亿,所以那时候副本的BOSS都设计成了转阶段.回血的模式,因为魔兽的血量是int型,不能超过2^32大小. 估计暴雪的设 ...
- mysql id会用完吗_数据库自增ID用完了会怎样?
起步 对DBA来说这应该是送分题吧.而我是突如其来的想法想测试下的.正常来说程序员是不会关心自增ID用完的情况的. 以 Mysql 为例,它支持的最大的整型是 unsigned bigint,上限是 ...
- mysql数据库自增_mysql数据库自增id用法大全
在mysql数据库中,使用auto_increment 字段来辅助为自增列赋值. 显示有关msyql自增ID的相关配置信息: 复制代码 代码示例: SHOW VARIABLES LIKE 'auto_ ...
- hive sql自动生成id的两种方法随机id和自增id
文章目录 1.生成自增id:row number() over(order by) 2.随机不重复id: regexp_replace(reflect('java.util.UUID','random ...
- 数据库自增id没有从0开始
/**如有错误,敬请指正**/ 在把本地数据库中的表移植到远程数据库时,遇到一个情况,由于原先的表中有数据,所以只是复制表结构输出为SQL文件,但是在远程,运行这个SQL文件,添加新的数据时,发现自增 ...
- repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...
在我们的开发过程中,经常会遇到ID生成的问题,那么这里就介绍一种解决方案,注意这里只适合混淆ID规则,也就是说生成的ID没有任何规则,不适用于订单ID. 一般有序自增主键的ID,极易被爬虫抓取数据,作 ...
最新文章
- java 重写set方法_Java程序设计-方法的重写(override)(笔记)
- 在Win8中创建热点,共享网络
- Swift - 可编辑表格样例(可直接编辑单元格中内容、移动删除单元格)
- JavaSE(八)——StringBuffer类、Arrays类、数组排序
- webpack+react+es6开发模式
- 高效实用Kafka-入门介绍
- 主要植物叶片数据集农作物病害数据集
- opencv识别圆的代码(转)
- IOS KVO与NSNotificationCenter简单使用
- FastReport使用一——简介
- Java项目开发工具汇总
- IIS无法启动,提示另外一个程序正在使用此文件
- 最快零基础上手——latex文档标题、一级标题、二级标题、内容搭建
- 关于广义相对论与量子力学之我见
- 视频教程-opencv应用实例-实战视频教学-计算机视觉
- IntelliJ IDEA运行JAVA
- 计算机少年宫辅导教师总结,学校信息技术教师的个人工作总结
- SpaceBuilder2.0 beta正式上线
- java毕业设计诗歌分享平台源码+lw文档+mybatis+系统+mysql数据库+调试
- python 创建excel 并保存(两种方法)
热门文章
- C#图形处理系列(一)——最简单第一步:逆反处理、二值处理
- 关于关闭浏览器Session就丢失的讨论
- Win7/Win8.1升级Win10后屏幕一直闪烁怎么办?
- iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)
- android Studio 配置LUA 开发环境
- poj 3487 zoj 1576 稳定婚姻
- 【转摘留用】页面静态化..
- Burrow 服务的安装部署
- Python 进阶之路 (八) 最用心的推导式详解 (附简单实战及源码)
- mysql数据库优化大全