位置: 编程技术 - 正文

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.)

  • 需要出口
  • 企业税收收入怎么计算
  • 税收申报减免
  • 房地产开发企业预收款预缴增值税
  • 法院判决书能做证据使用吗
  • 房屋出租怎么交税?
  • 土地股权转让交多少税
  • 冲销暂估入库
  • 运输公司租入的车辆如何核算
  • 实缴年月正常补收
  • 公司支付劳务派遣人员工资账务处理
  • 股东垫支开办费
  • 2019新版利润表填表说明
  • 个税申报系统换一台电脑要怎么办
  • 去年的发票今年能红字冲销吗
  • 餐饮充值赠送
  • 银行交纳进口关税政策
  • linux 卸载vmware
  • php获取访问者qq
  • Win10待机唤醒后白屏怎么办
  • 鸟瞰高耸入云的成语
  • 在web页面中如果出现html语句
  • 企业规模扩大后更易于管理吗
  • PHP:mcrypt_get_cipher_name()的用法_Mcrypt函数
  • php实现用户登录
  • 非正常损失的存货进项税额转出
  • 训练自己的GPT模型 中文改英文
  • yew 框架
  • scp命令 基于SSH协议远程复制文件
  • 贪吃蛇python小白
  • php常用加密技术
  • js相关知识
  • vue2 diff算法
  • 企业年报经营状态
  • 调整以前年度销售收入
  • 征收率有几种
  • 如何禁用笔记本键盘触摸板
  • linux db2安装与配置
  • 工资单应该盖什么章
  • sql查询服务器硬件信息
  • Linux编译mssql扩展使用php连接sqlserver2008的使用步骤
  • 购进运输服务取得的成果
  • 当事人对付款时间没有约定或者约定不明的
  • 收到销售方负数发票可以次月入账吗
  • 产品销售的账务处理办法
  • 其他货币的账面价值包括
  • 收到房租租金下什么科目
  • 报废半成品怎么做账
  • 在建工程的人工费进行了全员申报后,清算时怎么处理?
  • 享受优惠政策的通知
  • 交车辆购置税需要什么材料
  • 未支付房租怎么做账
  • 丢失了发票怎么处理
  • 材料的运费计入哪个科目
  • 工会经费按照什么计算缴纳
  • 营业收入的核算内容包括
  • mysql 连续日期
  • WIN10系统怎么删除3Dmax
  • surface rt升级win10详细教程
  • win7怎么设置禁止安装软件
  • xp系统回收站的东西删除了怎么找回来
  • mac app store更新软件一直输入密码
  • 查看rpm包含的内容
  • ie等级
  • 简述常用
  • js判断手机号
  • perl中的$_
  • 纸嫁衣6攻略全文图解
  • 深入理解javascript特性.pdf
  • javascript对象的种类
  • node.js如何运行
  • javascript如何学
  • jquery fadein 源码
  • unity双面材质
  • Android ToolBar 的简单封装
  • 地方电子税务局是干嘛的
  • 纳税申报之后最迟多久交
  • 下抓两级抓深一层的工作机制的要求包括什么
  • 地税局基层职位怎么样
  • 在烟台如何发布招聘信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设