位置: 编程技术 - 正文

并发环境下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锁表机制)

  • 进口洋酒能存放多少年
  • 工会可以现金支付吗
  • 休产假个人部分社保公司怎么做账
  • 金税盘税务申报
  • 残保金滞纳金可以税前扣除吗
  • 工程结算扣罚款怎么开票
  • 已认证未抵扣的进项怎么填写
  • 自行建造固定资产中的自营工程,在领用工程物资
  • 存货盘点科目
  • 递延所得税当期所得税费用
  • 房屋租赁违约金是月租金的30%还是年租金
  • 其他应付款重分类到哪个科目
  • 合同和付款单位不一致发票应该开给谁
  • 跨年的发票能红字冲销吗?
  • 转让无形资产所有权计入什么科目
  • 民间非营利组织财务报表
  • 旅游门票报销怎么算
  • 办理环评费用
  • 供应商给客户员工回扣有罪吗
  • 企业买断政策
  • 配置path环境变量
  • 药品推广服务费怎么开票
  • 企业购买银行理财
  • 右键菜单里的快捷键
  • 增值税发票可以抵扣多少
  • fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
  • php __invoke
  • php fileinfo
  • element组件的二次封装注册
  • 公允价值变动损益在利润表哪里
  • 日落之前是什么时辰
  • vue-plugin-hiprint vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用
  • chat怎么用
  • 人工智能机器人
  • set_ccopt_property
  • chmod命令用于更改文件或目录的所有者
  • 交易性金融资产属于流动资产
  • 卖出周转材料的分录怎么做
  • 办公费用会计科目怎么写
  • 海关缴款书稽核比对
  • 事业单位应当按月对固定资产计提折旧
  • python中的logging记录日志
  • python中lambda用法
  • sql server如何操作
  • sqlserver数据类型转换函数
  • 技术服务型公司如何做账务处理
  • 坏账准备的账务处理例题视频讲解
  • Windows7下Microsoft SQL Server 2008安装图解和注意事项
  • SQL SERVER 2000通讯管道后复用劫持
  • 注销营业执照的app
  • 房屋维修基金是谁交
  • 代收资金清算过程
  • 银行保函会计处理
  • 主营业务利润率反映了企业的什么能力
  • 实缴出资未注明投资款
  • 营业成本年末怎么结转
  • 其他债权投资发生减值会影响所有者权益总额吗
  • 投入产出比的计算依据
  • 明细账怎么弄
  • win7电脑初始化
  • win10弹出提示
  • xp安装盘复制u盘
  • 苹果手机
  • win8怎么彻底删除安装的软件
  • windows10 14393版本
  • win7系统自动弹出搜索框
  • 图片加载完成再加载
  • opengl绘图
  • jquery自定义事件
  • Developing for Android, IV: The Rules: Networking
  • 福建2021年水利水电招聘
  • 江苏4050社保补贴政策2024
  • 新疆干部在线网络平台登录
  • 施工企业应缴纳的税金计算
  • 山东统一发票查询平台
  • 稳岗补贴是否需在企业所得税汇算时调增
  • 加工销售如何做账
  • 小微企业印花税税率
  • 浙江残保金征收标准
  • 2019年十堰市高中录取分数线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设