位置: 编程技术 - 正文

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

  • 销售无形资产增值税纳税义务发生时间
  • 出库单上面的单位写谁的
  • 纳税人申请退税需要报送的资料和证件有
  • 增值税出口免退什么意思
  • 个人互换住房土地增值税
  • 物业公司代收水电费会计分录
  • 以公司名义办宽带怎么办
  • 公益捐款
  • 购买软件可以退款吗
  • 外埠纳税人经营地报验登记税务管理论文
  • 计提工资和实际发放工资
  • 工资薪金支出税收额是什么意思
  • 住房公积金证书更新
  • 试生产期间的账务处理
  • 公司已转让 前面会不会追究
  • 小型微利企业普惠性税收减免政策执行期限
  • vue城市列表插件
  • PHP:oci_new_collection()的用法_Oracle函数
  • php实现简单数字变量
  • 工商企业年报网上申报流程
  • 商品房的维修金该怎么交
  • 公司党员活动日方案
  • 没有独立显卡没有核显能开机吗
  • 美国宇航局视频
  • php中require和include是用来做什么的
  • 稳岗补贴怎么发放给员工
  • 计提的福利费怎么处理
  • 先收票后收货
  • html+css+javascript编程入门指南
  • php的输出语句
  • 外经证还有几天到期延期需要的资料
  • 母公司为子公司提供担保需要决议吗
  • 向境外企业支付咨询费
  • 工会经费按工资总额的
  • 帝国cms破解授权
  • mongodb bi
  • 软件企业主营业务活动说明范文
  • 产权转移数据印花税纳税期限
  • 出库单可以自制吗
  • 增值税包括哪三种类型
  • 电脑填制记账凭证合计数前的符号怎么输入
  • 会计做账可以写负数吗
  • 结构性存款是什么意思是理财
  • 税金及附加和营业税金及附加是一个科目吗
  • 出口退税申报系统汇率修改
  • 企业每月营业额达多少需要交税
  • 公司预支款应注意什么
  • 防伪税控服务费全额抵扣申报表怎么填
  • 农产品怎么自产自销
  • 企业给加盟店的钱怎么算
  • 建筑业红字发票如何开
  • 支付给其他公司的借款属于什么现金流
  • 赠送的产品价格为发票金额为零怎么入库
  • 为什么说进项和销项是相对的
  • 会计行政法规包括哪些条例?具体说明?
  • 哪些人必须办理纳税登记
  • window系统怎么更新版本
  • win10自动调整时间不准
  • win10苹果版
  • 如何设置win10系统输入法
  • linux不能识别u盘
  • win8.1最流畅
  • ftp自动上传文件怎么关闭
  • 游戏开发u3d
  • 如何设置div自适应宽度
  • python3 pygame
  • 关于jQuery中的DOM操作,下列哪种方法用来复制元素?
  • node.js开发实战详解
  • dom教学
  • android下的单元测试要配置以下说法不正确的是
  • 北京亦庄开发区属于哪个区
  • 江苏省发票查询电话
  • 10086出现预警提示怎么回事
  • 北京市国家税务局官网手机app
  • 地税局网站查询发票
  • 投资联营的房产税纳税人是谁
  • 资源税的税目,税率依照税目税率表执行
  • 公司租商铺
  • 北京市门头沟最西边有个塔子叫什么
  • 房地产契税2023年最新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设