位置: 编程技术 - 正文

SQL Server并发处理存在就更新解决方案探讨(sqlldr并发)

编辑:rootadmin

推荐整理分享SQL Server并发处理存在就更新解决方案探讨(sqlldr并发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql并发控制怎么实现,sqlserver并发处理,sqlserver数据库并发设置,sqlserver数据库并发设置,sql server 并发,sqlserver并发处理,sql并发控制怎么实现,sqlserver数据库并发设置,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

本节我们来讲讲并发中最常见的情况存在即更新,在并发中若未存在行记录则插入,此时未处理好极容易出现插入重复键情况,本文我们来介绍对并发中存在就更新行记录的七种方案并且我们来综合分析最合适的解决方案。

探讨存在就更新七种方案

首先我们来创建测试表

解决方案一(开启事务)

我们统一创建存储过程通过来SQLQueryStress来测试并发情况,我们来看第一种情况。

同时开启个线程和个线程出现插入重复键的几率比较少还是存在。

解决方案二(降低隔离级别为最低隔离级别UNCOMMITED)

此时问题依旧和解决方案一无异(如果降低级别为最低隔离级别,如果行记录为空,前一事务如果未进行提交,当前事务也能读取到该行记录为空,如果当前事务插入进去并进行提交,此时前一事务再进行提交此时就会出现插入重复键问题)

解决方案三(提升隔离级别为最高级别SERIALIZABLE)

在这种情况下更加糟糕,直接到会导致死锁

此时将隔离级别提升为最高隔离级别会解决插入重复键问题,但是对于更新来获取排它锁而未提交,而此时另外一个进程进行查询获取共享锁此时将造成进程间相互阻塞从而造成死锁,所以从此知最高隔离级别有时候能够解决并发问题但是也会带来死锁问题。

SQL Server并发处理存在就更新解决方案探讨(sqlldr并发)

解决方案四(提升隔离级别+良好的锁)

此时我们再来在添加最高隔离级别的基础上增添更新锁,如下:

运行多次均未发现出现什么异常,通过查询数据时使用更新锁而非共享锁,这样的话一来可以读取数据但不阻塞其他事务,二来还确保自上次读取数据后数据未被更改,这样就解决了死锁问题。貌似这样的方案是可行得,如果是高并发不知是否可行。

解决方案五(提升隔离级别为行版本控制SNAPSHOT)

上述解决方案也会出现插入重复键问题不可取。

解决方案六(提升隔离级别+表变量)

经过多次认证也是零错误,貌似通过表变量形式实现可行。

解决方案七(提升隔离级别+Merge)

通过Merge关键来实现存在即更新否则则插入,同时我们应该注意设置隔离级别为SERIALIZABLE否则会出现插入重复键问题,代码如下:

多次认证无论是并发个线程还是并发个线程依然没有异常信息。

总结

本节我们详细讨论了在并发中如何处理存在即更新,否则即插入问题的解决方案,目前来讲以上三种方案可行。

解决方案一(最高隔离级别 + 更新锁)

暂时只能想到这三种解决方案,个人比较推荐方案一和方案三, 请问您有何高见,请留下您的评论若可行,我将进行后续补充。

解决方案二(最高隔离级别 + 表变量)

解决方案三(最高隔离级别 + Merge)

暂时只能想到这三种解决方案,个人比较推荐方案一和方案三, 请问您有何高见,请留下您的评论若可行,我将进行后续补充。

标签: sqlldr并发

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

上一篇:Sqlserver事务备份和还原的实例代码(必看)(sqlserver完整备份)

下一篇:详解SQL Server如何修改数据库物理文件的存在位置(sql server.)

  • 税会差异产生的原因
  • 研发费用加计扣除是什么意思啊
  • 加计抵减不符合怎么办
  • 小规模企业所得税税率多少
  • 个人收到利息要交增值税吗为什么
  • 装订需要多长时间
  • 修理办公用复印机好吗
  • 外经证缴纳个税流程
  • 资本公积是啥
  • 预付账款冲减费用
  • 工程款发票开给委托方要如何处理?
  • 营改增后书据转移印花税是含税的吗?
  • 海关进口增值税计算公式
  • 汽车修理费增值税税率
  • 地税发票开票有误,红字发票要如何开具?
  • 公益组织接受捐赠怎么开票
  • 普通发票和增值税专用发票有什么异同
  • 预提费用年底必须结转吗
  • 农产品零税率
  • 投资预算的编制方法
  • 计提福利费会计科目
  • 进项税额转出月底如何结转
  • 笔记本电脑设置pin是什么意思
  • 从银行提取备用金填制什么凭证
  • 分摊本月领用材料的成本差异
  • 增值税进项发票不够抵扣怎么办
  • 增值税进项税额转出的情况有哪些
  • wordpress app怎么用
  • php io操作
  • 会计科目怎么调账
  • 进货发票怎么抵税
  • 求源代码
  • thinkphp框架怎么用
  • 外贸企业出口退税流程(详细步骤)
  • 税金及附加在哪里申报
  • 定额发票累计领用金额怎么填
  • 电话费发放标准2020
  • php调用微信扫描二维码
  • 2023值得推荐的手机
  • js去掉数组中的空字符串
  • 平常心下一句该怎么说
  • 记账复核是谁
  • 什么是零申报,长期零申报有什么风险
  • 公司扣除保险费会计分录
  • 金税盘登录密码和口令从哪查
  • 临时工工资账务处理该怎么进行
  • 打开access自动弹出窗体
  • 员工工资扣工作服押金怎么做账呢
  • 信用减值损失属于公允价值变动收益吗
  • 闲置设备的处理方式
  • 专票已认证但又不能抵扣
  • 公司注销未认证怎么处理
  • 跨年度的银行未入账如何处理
  • 支付的员工餐费怎么记账
  • 美元利息结汇时结汇项目是什么
  • 替其他公司支付工资怎么做账
  • 没有取得增值税发票
  • 固定资产的建造成本怎么计算
  • mysql工作内容
  • centos直接进入命令行
  • 怎么更改win7
  • win7系统换桌面
  • win10系统安装.net framework 3.5
  • ubuntu中装虚拟机
  • win10桌面图标显示错误
  • windows7开机显示错误恢复进不去
  • win10wifi总是掉线
  • linux userdel
  • node.js 10实战
  • 开手游游戏
  • 手把手教你使用opc
  • js selectionchange
  • javascript编程基础
  • android studio 开发语言
  • 盗梦英雄限时占卜顺序
  • jquery 滑动显示
  • javascript post语法
  • 12366纳税服务热线存在的问题
  • 上海嘉定小学入学积分
  • 利润表研发费用项目应根据管理费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设