【技术实现步骤摘要】
数据库主键id生成方法、装置、设备及存储介质
本申请涉及数据库信息处理
,特别是一种数据库主键id生成方法、装置、设备及存储介质。
技术介绍
现有数据库的主键id(Identification,身份证明)生产方案一般有使用uuid(UniversallyUniqueIdentifier,通用唯一标识码)、主键自增或者开源的雪花算法等。但以上主键id生成方式都有各自的缺陷:uuid会导致数据库分裂页,产生大量碎片以及插入数据慢等缺点;自增主键在分布式环境下最大值锁竞争激烈,也消耗性能,且最大的主键值即为业务量,容易暴露业务量;雪花算法为随机整数,也会导致数据库分页等缺陷。
技术实现思路
本申请实施例所要解决的技术问题是,提供一种数据库主键id生成方法、装置、设备及存储介质,提升主键id的生产效率,并减小数据库资源竞争和避免暴露业务量。为了解决上述技术问题,本申请实施例提供一种数据库主键id生成方法,采用了如下所述的技术方案:一种数据库主键id生成方法,包括:基于预设的时 ...
【技术保护点】
1.一种数据库主键id生成方法,其特征在于,包括:/n基于预设的时间维度获取当前的时间戳;/n获取容器初始标识符,并将所述容器初始标识符转换为以整数表示的目标容器标识符;/n读取预设的掩码长度,根据所述掩码长度定义一个以整数表示的运算掩码;/n获取自增序列,调用所述自增序列以获取自增序列号,并对所述自增序列号与所述运算掩码执行位运算获取目标序列号;/n对所述时间戳、所述目标容器标识符和所述目标序列号执行位运算,生成目标主键id。/n
【技术特征摘要】
1.一种数据库主键id生成方法,其特征在于,包括:
基于预设的时间维度获取当前的时间戳;
获取容器初始标识符,并将所述容器初始标识符转换为以整数表示的目标容器标识符;
读取预设的掩码长度,根据所述掩码长度定义一个以整数表示的运算掩码;
获取自增序列,调用所述自增序列以获取自增序列号,并对所述自增序列号与所述运算掩码执行位运算获取目标序列号;
对所述时间戳、所述目标容器标识符和所述目标序列号执行位运算,生成目标主键id。
2.根据权利要求1所述的数据库主键id生成方法,其特征在于,所述获取容器初始标识符,并将所述容器初始标识符转换为以整数表示的目标容器标识符的步骤包括:
获取容器对应的容器名称、服务器ip地址和机器码;
将所述容器名称、所述服务器ip地址和所述机器码进行组合后,通过哈希处理生成目标哈希值;
将所述目标哈希值转换为以无符号长整型表示的所述目标容器标识符。
3.根据权利要求1所述的数据库主键id生成方法,其特征在于,所述获取自增序列的步骤包括:
调用jdk中的AtomicInteger原子类;
访问所述AtomicInteger原子类对应的应用程序接口,通过getAndIncrement或incrementAndGet方法获取所述自增序列。
4.根据权利要求1所述的数据库主键id生成方法,其特征在于,所述获取自增序列的步骤还包括:
调用预设的序列自增语句;
获取序列自增需求,所述自增需求中指定有序列自增时的初始序列号、序列间隔和序列最大值;
基于所述序列自增需求配置所述序列自增语句生成自增序列。
5.根据权利要求4所述的数据库主键id生成方法,其特征在于,所述基于所述序列自增需求配置所述序列自增语句生成自增序列的步骤还包括:
读取预设的回滚阈值;
比较所述序列最大值和所述回滚阈值的...
【专利技术属性】
技术研发人员:黄炳森,
申请(专利权)人:平安普惠企业管理有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。