位置: 编程技术 - 正文

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

  • 个税必须每个人交吗
  • 足浴按摩开票明细一栏写什么
  • 顺风车公司可以开发票吗
  • 股东借款超过一年个人所得税
  • 管道运输是什么和什么合二为一
  • 固定资产特性
  • 固定资产适用范围
  • 记账凭证核算形式账务处理程序的基本特点
  • 分包挂靠认定依据
  • 法人转账到开户行的会计分录怎么做?
  • 在汇兑结算方式中汇入行对流行代取的款项应先转入
  • 公司如何向税务部门举报
  • 增值税专用发票怎么开
  • 喷绘广告公司税率是多少
  • 企业当年度增值税税率
  • 备用金 退款
  • 出口货物 关税
  • 季度利润表本月数和本年累计数
  • 公司拨付工会经费怎么算的
  • 主营业务收入和其他业务收入的区别
  • 贸易公司购入商品会计分录
  • 车船使用税计缴标准
  • 企业取得代理销售发票
  • window10怎么用wifi上网
  • win11默认用户名
  • 增值税年末结转是结转全年吗
  • 收入的特征包括哪些
  • PHP:pg_convert()的用法_PostgreSQL函数
  • 商贸宝红冲和红字反冲
  • laravel基础
  • 一次性取得的租金收入
  • php从数据库中读取数据
  • 科技推广和应用服务业行业
  • php 微信公众号
  • PHP isset()与empty()的使用区别详解
  • 工具人
  • linux的nano是什么意思
  • yolo算法python代码
  • 小规模场地租赁费税率是1还是5
  • php页面跳转可以用header
  • 汇兑损益计算器
  • 企业注销亏损怎么处理
  • 一定要确认收入的时候才能开票吗
  • 应纳所得税额等于利润总额减去差异
  • 管理费用的纳税调整
  • 会计利润属于什么会计科目
  • 税前列支的项目
  • 以前年度损益调整怎么做账
  • 以前年度费用未入账,现可以入账吗?
  • 汇算清缴期间费用社保填哪里
  • 现金比率合适范围
  • 职工福利费如何入账
  • 长期借款利息计入应付利息吗
  • 商业承兑汇票如何承兑?
  • 组织机构代码证和统一社会信用代码的关系
  • 一般纳税人的进项税率是多少
  • 企业应当在
  • 固定资产帐怎么做
  • 企业如何建账做账
  • mysql union unionall
  • sql局部变量标识符
  • 让windows server 2003 32位支持8G内存大内存
  • ime是什么文件
  • linux忘了root密码
  • linux系统基础教程
  • 飞信安卓下载
  • debian怎么配置ip
  • 固定ie浏览器
  • win10预览版选哪个
  • Node.js中的事件循环是什么意思
  • unity3d模型怎么制作
  • 简述js json对象和字符串的转换方式
  • linux shutdown命令详解
  • jquery实现div左右移动
  • 粮食企业所得税税率
  • 广州市税务局官网电话
  • 伊川娘娘山传说
  • 实名办税的法律依据
  • 代理记账资质办理在哪个网站提交申请
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设