位置: 编程技术 - 正文

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

  • 航天金税盘使用说明
  • 进项税额转出的情况
  • 厂房自用和出租税收区别
  • 工程施工与工程结算在资产负债表里
  • 外来原始凭证包括哪些入库单
  • 如果零申报
  • 小汽车的增值税怎么算
  • 民办幼儿园的税收是多少
  • 个体工商户开普票流程
  • 农产品加工需要交税吗
  • 资产负债表不平的原因有哪些
  • 固定资产报废废铁收入需要交税吗
  • 购买理财产品现金流量处理怎么做?
  • 收到投资者购买股票的资金
  • 辅助生产车间最后结转到哪里
  • 营改增后11
  • 增值税专用发票抵扣期限
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • 企业发放给员工子女抚养费
  • 经营性租入的设备是资产吗
  • 金蝶期末调汇怎么生成凭证
  • 公司投资另外一个公司全资占股需要什么流程
  • 成本费用利润率越高,说明企业盈利能力
  • 企业研发活动中心职责
  • 上月发票未上传
  • ubuntu系统怎么安装微信
  • php过滤emoji
  • 广告费和业务宣传费税前扣除基数
  • 公司转让股权交不交增值税
  • 程序员中秋节祝福语
  • 工程完工后的质保金怎么入账
  • 现金流方法
  • 使用二氧化碳灭火器时人应该站在什么位置
  • 三级菜单python
  • mysql分区实现
  • 出口退税率和进口税率的区别
  • 核销已计提坏账的应收账款
  • 买商品赠送赠品怎么做账
  • 帝国cms商城源码
  • 需要做审计有哪些行业
  • sql中的row_number
  • mysql 查询平均值
  • 农机合作社项目申报方案
  • 进口货物应纳增值税的计算公式
  • 收入准则适用范围
  • 税控技术维护费普通发票可以抵扣吗
  • 企业每月营业额达多少需要交税
  • 销售回扣能计入销售费用吗?
  • 非税收入如何退款
  • 海关对旧设备进口规定
  • 担保公司预计负债
  • 预缴增值税什么科目
  • 应收应付对冲的分录
  • 暂估出口收入如何计算
  • sqlserver使用方法
  • ie11 ua
  • xp电脑开机进入bios怎么办
  • windows vista可以换7吗
  • ghost怎么安装gho文件
  • win7桌面图标都不见了
  • player文件怎么打开
  • win10极限模式
  • sendmail邮件服务器
  • 微软发布更新的时间每月
  • 非常好的成语
  • javascript:window.top.space_additem
  • 文件夹权限命令
  • python中迭代器的作用
  • 给shell脚本传参数
  • unity游戏开发的技术
  • jquery取消单选框选中
  • js如何输出页面内容
  • python黑帽子怎么样
  • javascriptz
  • 安卓手机安装推特
  • node express 路由
  • jquery22插件网
  • 如何在国税网上做企业会计制度备
  • 发票机怎么测试打印
  • 房租是不是先交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设