位置: 编程技术 - 正文

基于Mysql的Sequence实现方法(基于mysql的sql应用)

编辑:rootadmin

推荐整理分享基于Mysql的Sequence实现方法(基于mysql的sql应用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于mysql的国产数据库,mysql sequences,mysql的sequence,基于mysql的sql应用,基于mysql的智能公交站台设计,基于mysql的国产数据库,基于mysql的国产数据库,基于mysql的数据库,内容如对您有帮助,希望把文章链接给更多的朋友!

团队更换新框架。新的业务全部使用新的框架,甚至是新的数据库--Mysql。

这边之前一直是使用oracle,各种订单号、流水号、批次号啥的,都是直接使用oracle的sequence提供的数字序列号。现在数据库更换成Mysql了,显然以前的老方法不能适用了。

需要新写一个:

&#;分布式场景使用

&#;满足一定的并发要求

找了一些相关的资料,发现mysql这方面的实现,原理都是一条数据库记录,不断update它的值。然后大部分的实现方案,都用到了函数。

贴一下网上的代码:

基于mysql函数实现

表结构

获取下一个值

并发场景有可能会出问题,虽然可以在业务层加锁,但分布式场景就无法保证了,然后效率应该也不会高。

自己实现一个,java版

原理:

&#;读取一条记录,缓存一个数据段,如:0-,将记录的当前值从0修改为

&#;数据库乐观锁更新,允许重试

&#;读取数据从缓存中读取,用完再读取数据库

不废话,上代码:

基于java实现

表结构

每次update,都是将SEQ_VALUE设置为SEQ_VALUE+STEP

sequence接口

序列区间

基于Mysql的Sequence实现方法(基于mysql的sql应用)

用于本地缓存一段序列,从min到max区间

BO

对应数据库记录

DAO

增删改查,其实就用到了改和查

Mapper

接口实现

工厂

工厂只做了两件事

&#;服务启动的时候,初始化数据库中所有sequence【完成序列区间缓存】

&#;获取sequence的下一个值

单一sequence的Holder

&#;init() 初始化 其中包括参数校验,数据库记录更新,创建序列区间

&#;getNextVal() 获取下一个值

总结

&#;当服务重启或异常的时候,会丢失当前服务所缓存且未用完的序列

&#;分布式场景,多个服务同时初始化,或者重新获取sequence时,乐观锁会保证彼此不冲突。A服务获取0-,B服务会获取-,以此类推

&#;当该sequence获取较为频繁时,增大step值,能提升性能。但同时服务异常时,损失的序列也较多

&#;修改数据库里sequence的一些属性值,比如step,max等,再下一次从数据库获取时,会启用新的参数

&#;sequence只是提供了有限个序列号(最多max-min个),达到max后,会循环从头开始。

&#;由于sequence会循环,所以达到max后,再获取,就不会唯一。建议使用sequence来做业务流水号时,拼接时间。如:+序列号

业务id拼接方法

以上这篇基于Mysql的Sequence实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

MySQL5.5.安装图文教程 一、MYSQL的安装1、打开下载的mysql安装文件mysql-5.5.-win.zip,双击解压缩,运行setup.exe2、选择安装类型,有Typical(默认)、Complete(完全)、Custom(

详解java调用ffmpeg转换视频格式为flv 详解java调用ffmpeg转换视频格式为flv注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv.dll东西放到

MySQL curdate()函数的实例详解 MySQLCURDATE功能介绍如果在数字上下文中使用字符串上下文或YYYMMDD格式,CURDATE()函数将以YYYY-MM-DD格式的值返回当前日期。以下示例显示了如何在字符串上

标签: 基于mysql的sql应用

本文链接地址:https://www.jiuchutong.com/biancheng/348639.html 转载请保留说明!

上一篇:MySQL5.7免安装版配置图文教程(mysql 免安装版)

下一篇:MySQL5.5.27安装图文教程(mysql5.7.22安装教程图解)

  • 经销商返点方案范文
  • 专项应付款怎核算?
  • 以前年度多缴的税款退回现金流量
  • 送货运杂费属于什么费用
  • 已经作废的发票还需要申报吗
  • 企业转让固定资产要交什么税
  • 小规模普票冲红原票要退回吗
  • 房企预收账款什么时候结转
  • 结算业务申请书和转账支票区别
  • 固定资产清理后卡片如何处理
  • 老板找人替我工作说明了什么
  • 接收虚开增值税专用发票要判刑吗
  • 公司用现金发放工资在税法上合规吗
  • 不是办税员可以去税局办事吗
  • 差旅费专用发票会计分录
  • 糖类计算公式
  • 夫妻双方交契税可以一人到嘛
  • 入职不满一年有年假吗
  • 事业单位考试一门多长时间
  • 销售应税消费品应交的消费税分录
  • 国际货运代理免税怎么做账
  • 金融服务收入如何做账
  • 金税服务费会计分录
  • 发票的校验码被公章覆盖了怎么办
  • 有形动产租赁服务和不动产租赁服务的区别
  • 员工吃饭发票的怎么报销
  • 库存商品出口退税的账务处理?
  • 所得税a类申报表
  • 贷款公司利息收据怎么写
  • 一般纳税人进项税会计分录
  • mac怎么更换默认打开方式
  • 现金流量表的内涵及其编制基础
  • 存货跌价准备是谁的备抵账户
  • 仓库折旧费
  • mac系统自带软件有哪些
  • 企业固定资产出售账务处理
  • php面向对象是什么意思
  • deepin怎么删除账户
  • 处理车辆违章送什么证件
  • 对公账户存款利息要交增值税吗
  • 资产减值损失的科目编码
  • Loughrigg Tarn的日出,英国英格兰湖区安布尔塞德 (© John Finney photography/Getty Images)
  • php新手入门
  • 公允价值进行会计计量
  • 缴纳残保金的计税依据是什么
  • 注册资金到位时间填多少年最好
  • 一般纳税人年收入500万交多少税
  • 应收账款逾期无法偿还
  • 汇算清缴没有调整怎么办
  • 土增清算后后续成本计算
  • 普票要盖发票的章子吗
  • mysql sql性能调优的方法
  • mysql用中文字段
  • windows下MySQL 5.7.3.0安装配置图解教程(安装版)
  • 个税手续费返还增值税申报表怎么填
  • 办公室里的咖啡馆玛氏市场细分
  • 加计抵减需要计税吗
  • 销售预付卡的账务处理
  • 其他应付款贷方增加还是减少
  • 董事会会议的召集程序
  • 车辆保险证明怎么开
  • 电子钥匙有效期多久
  • 会计账簿的含义及其作用
  • record关键字
  • MySQL在Linux系统中隐藏命令行中的密码的方法
  • dell bios密码忘记
  • windows7计算机管理拒绝访问
  • win10电脑打开图片文件夹会跳闪
  • linux启动u盘制作
  • linux下scp远程拷贝包含空格的目录或者文件的解决方法
  • windows 7中,执行应用程序的方法有哪几种?
  • win7系统怎么锁定屏幕
  • perl 排序
  • 视觉观点
  • 国家税务总局广州市税务局
  • 税务机关文化建设
  • 郑州市华润燃气多少钱一立方
  • 河南个人医保缴费查询
  • 餐饮专票可以抵扣吗
  • a级纳税人和一级的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设