位置: 编程技术 - 正文

并发环境下mysql插入检查方案(并发环境下,共享资源的正确使用方式是)

编辑:rootadmin

推荐整理分享并发环境下mysql插入检查方案(并发环境下,共享资源的正确使用方式是),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql并发处理,并发环境下ora01013用户请求取消当前的操作,mysql写并发瓶颈,并发环境下程序的特点,并发环境下程序的特点,并发环境下程序的特点,并发环境下ora01013用户请求取消当前的操作,并发环境下,共享资源的正确使用方法是(),内容如对您有帮助,希望把文章链接给更多的朋友!

业务背景: 基本业务场景是这样的,请求数据(车辆vin信息)进入到接口中,需要先判断其在数据库中的状态,如果库中不存在该vin,或者该vin状态位为“1(已完成)”,则执行一些检查操作后,将数据插入到数据库中,此时新增vin状态为0,调用人工处理接口,十分钟后返回结果,将状态置为1。如果其状态位为“0(正在处理)”则驳回操作,返回提示信息。 在单线程环境下,这样的业务没有问题,然而当并发访问接口时,会出现同时进入两条vin相同的请求AB,正常情况应该插入一条A,驳回一条B。然而并发环境下,B执行检查状态时A还没有插入,因此AB都进入到了数据库中,数据就错误了。

解决方案一: 首先想到的是使用sql处理,对数据库对应字段加唯一索引,保证一致性。如果插入重复的数据,则catch该异常,做出提示。

但是由于业务限制,vin在库中是可以重复的,多条重复数据查询最新,所以不能再vin上添加唯一索引。

并发环境下mysql插入检查方案(并发环境下,共享资源的正确使用方式是)

解决方案二: 使用mysql事务操作,将检查是否存在和插入作为一个事务进行处理,当检查失败的时候,不进行插入。从网上搜索了一下,大致思路如下:

但是这样实际上还是没有解决并发的问题,这样只是把两个操作变成了一个原子的sql操作,可以用于同时插入两条数据一致性的情况,但并不适合需求。

既然sql层面没有解决问题,就考虑从java的并发编程方向解决。 解决方案三: java解决并发问题,首先想到的是使用内置锁或者可重入锁,基本语法如下: ·内置锁: 由于是在Servlet中进行的处理,因此使用synchronized(this)直接处理业务代码,使得并发情况下,只能有一个线程访问到该段业务代码:

·可重入锁: 相当于更灵活的内置锁,在这里与内置锁基本相同

经过测试,这个方案是可行的,最终没有采用的原因是因为直接使用这种方式加锁,加锁的代码太多,影响效率。

解决方案四: 设置一个查询Map,插入前存储数据,插入后删除数据,代码如下:

这个方案基本满足了业务需求,唯一的问题是要求接口的更新时间要与业务时间错开,否则更新接口会清空vinMap,导致库中数据混乱,出现错误。

标签: 并发环境下,共享资源的正确使用方式是

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

上一篇:MySQL在右表数据不唯一的情况下使用left join的方法(mysql显示数据库中的表)

下一篇:MYSQL锁表问题的解决方法(mysql锁表机制)

  • 企业之间借款利息进项税可以抵扣吗
  • 个人所得税谁交
  • 实收资本记账凭证摘要怎么写
  • 收据盖公章要注意哪些
  • 农产品计算抵扣的税务政策
  • 事业单位私车公用条例
  • 员工宿舍免征房产税
  • 如何设置处理器个数如何设置显示器超频
  • 承包经营所得发包方如何纳税
  • 转账显示未认证
  • 支付资金占用费怎么记账进项税
  • 增值税专票过了3年能抵扣吗
  • 小规模公司可以贷款吗
  • 企业采购一般应包括什么
  • 房地产企业工程款支付流程
  • 税号里面字母是大写吗
  • 税号里的0是字母还是数字
  • 生产活动产生的正的消费外部效应
  • 软件公司客户经理一般月薪多少
  • 库存股股本属于什么科目,借贷方向
  • 固定资产双倍余额递减法计提折旧公式
  • 报销货物运输费需要什么凭证
  • win11 桌面右键
  • 用应付票据付应收账款
  • kindle屏幕黑斑
  • 变更营业执照中心怎么改
  • 工程结算
  • 离职后原单位不给开离职证明
  • 投资性房地产转为存货
  • 什么情况借钱
  • node js 安装
  • js字符串转换为数字类型
  • 数字图像处理实验一实验报告
  • 前端使用vue的好处
  • vue.mixin是什么
  • 民办幼儿园需要什么资质
  • 汽车以旧换新怎么操作
  • 管理费用抵消分录
  • 织梦生成出现500
  • 房地产企业开发的已出租的房屋属于投资性房地产吗
  • 个人开具工程款发票
  • 进项税额计提是哪个科目
  • mysql两个数据库连接查询
  • 软件产品增值税即征即退
  • 员工补助每月申报怎么填
  • 跨月的凭证出错如何处理
  • 在建工程和预付账款怎么转化
  • 公司给员工购买商业保险报销哪些
  • 合伙企业是否需要缴纳印花税
  • 展会赠品
  • 财务费用在贷方负数表示什么
  • 进出口企业需要哪些手续
  • 房地产开发企业开发成本包括哪些项目
  • vb.net invoke
  • sql语句 时间差
  • window怎么样
  • macbookair无响应
  • secbizsrv.exe是什么程序
  • mac book丢失
  • linux服务器dns配置
  • win8手机版
  • shell32.exe - shell32是什么进程 有什么用
  • linux和windows的区别?
  • Win10 Mobile Build 14269版截图曝光:脱胎换骨 速度飙升
  • javascript怎么用
  • 开手游游戏
  • tensorflow.nn
  • perl使用保留字引用什么模块
  • 写个置顶
  • php获取当前脚本路径
  • 检测ip地址命令
  • 贝塞尔曲线生成器
  • python获取当前日期的前一天
  • 使用jquery操作dom
  • 河南普通发票查询真伪查询系统
  • 购车发票包含
  • 书画作品赠送仪式
  • 陕西省国家税务总局电子税务局
  • 南通医保2023年新政策
  • 土地使用税征收时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设