位置: 编程技术 - 正文

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

  • 一次性医用外科口罩哪个牌子好
  • 小规模纳税人预缴企业所得税
  • 企业增资会计处理流程
  • 房屋租赁备案要准备什么资料
  • 怎么才算小企业
  • 小规模纳税人开具增值税专用发票
  • 商场做促销
  • 企业购买房屋的行为涉及哪些税种
  • 公司库存现金如何存回银行
  • 工程预付款包括工人工资吗
  • 记账时显示期初未建账
  • 商务旅行人身意外伤害险在税前扣除范围内吗?
  • 企业购买的预付卡赠送客户怎么入账
  • 总公司业务分公司开票是虚开吗
  • 生产企业出口退税流程怎么操作
  • 会议费税前扣除标准2021
  • 商品进销差价如何结平
  • 税务非正常户罚款多少
  • 工会工费缴纳标准
  • 暂估入库企业所得税税率
  • 交通定额发票税率
  • 账面价值和账面成本的区别
  • 收到工程结算单,没有发票,能入成本吗
  • 在windows 7中
  • 预提开发成本超过10%部分计算的销售成本转回
  • 代买车船税怎么挣钱
  • thinkphp获取数据库数据
  • 企业清算有哪些类型
  • 公司二手车转个人
  • 自建房买卖需要缴哪些费用
  • 第一部塞班手机
  • 高新技术企业税率15%
  • 设备租赁会计科目
  • PHP:mcrypt_module_get_supported_key_sizes()的用法_Mcrypt函数
  • 企业购入软件会计分录
  • 触屏不灵敏怎么调整oppo
  • 关于增值税专用发票
  • 报个税时显示扣缴单位无有效的税费种认定信息
  • php统计中文长度
  • 微信公众号php开发教程
  • 局部规划算法
  • javaweb购物
  • 机器学习篇-指标:AUC
  • dmsetup remove_all 会不会清掉数据
  • 代扣车船税的会计处理
  • Python列表元素的删除
  • 劳务派遣公司账务
  • 税控盘没有报税处理这个选项
  • 招待费进项转出填表二哪里
  • 所得税预缴申报表资产总额怎么填
  • 委托加工的材料成本是否含增值税
  • 开具专票需要哪些材料
  • 商业企业库存商品成本核算
  • 应付职工薪酬完整会计处理
  • 总公司是一般纳税人分公司是什么
  • 应付利息怎么记账
  • 特许权使用费代扣代缴企业所得税
  • 电脑属于固定资产哪类
  • 2021年win10新系统版本
  • win8.1怎么优化才流畅
  • win10 ie8浏览器
  • windows7旗舰版怎么打字
  • 如何解决win7系统不稳定
  • cocos开发android游戏
  • 怎么查看opengl版本
  • jQuery插件下载
  • shell脚本中如何交互传参
  • vue.js打包部署
  • 物理引擎演示
  • 用简单的方法做好玩的手工视频教程
  • python搜索功能
  • android面试题2019
  • 网络发票开票系统怎么设置?
  • 深圳市国家税务局赵雨婷
  • 国家税务局令第16号文
  • 东营为什么没有疫情
  • 转让专利权取得的所得属于财产转让所得吗
  • 浙江网上税务局申报
  • 粮食部门是不是国家机关
  • 如果企业所得税没有做计提怎么办?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设