位置: 编程技术 - 正文

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

  • 三代税款手续费退费申请
  • 个人所得税汇算表
  • 已抵扣的进项税额怎么转出
  • 乙方收到甲方项目建设工程款如何记账
  • 微信支付算库存现金还是银行存款
  • 银行转账支付凭证有效期多久
  • 不动产用于集体福利能否抵扣
  • 医院财政资金免企业所得税吗
  • 建筑业确认收入的时间是按进度计量么
  • 新公司建账初始数据可以全部为零吗
  • 规划设计合同需要缴纳印花税吗为什么
  • 全额抵扣的发票怎么申报增值税
  • 免税的开成有税率的怎么办
  • 销售开红字的账务处理
  • 融资租赁出租方会计处理
  • 小规模纳税人开专票税率是1%还是3%
  • 城市生活垃圾处理收费管理办法
  • 企业存款利息计入什么科目
  • 银行承兑个人可以接受吗
  • 居民企业只就其境内全部所得纳税
  • 职工旅游费计入什么科目
  • 开具发票给顾客公司需要交纳什么税?
  • 管家婆怎样查历史记录
  • 对公账户在税务局能查到吗
  • 企业公益捐赠的意义
  • mac怎么修改图片格式jpg
  • 吸甲醛最好的植物是什么?
  • win10开机内存占用60% 8g占用过高
  • 进口货物可以退回吗
  • 预计负债的计量,如何确定最佳估计数
  • 有限公司注册资金多少好
  • 企业收缩案例
  • 停工损失会计准则
  • php数组函数面试题
  • win7旗舰版系统怎么样
  • 固定资产财产损失的账务处理
  • 发票抵扣条件
  • web前端基本知识
  • php防止抓包
  • react受控和不受控组件的区别
  • php.ini中date.timezone设置详解
  • 汇算清缴补交所得税怎么做凭证
  • 承包安装工程活怎么接
  • 增值税的滞纳金税率
  • 固定资产停止使用还要折旧吗
  • 非正常户是黑名单吗
  • 零申报社保是否可以报销
  • 使用SQL server创建数据库和表
  • SqlServer 2005 T-SQL Query 学习笔记(4)
  • 小企业如何核算成本费用
  • 什么是认缴出资金额
  • 租办公室自己装修可以拆走吗
  • 合并设立是什么意思
  • 承兑汇票收据开什么发票
  • 工程物资属于什么项目
  • 企业进项税额大于销项税额
  • 行政单位合并财务怎么办
  • 用友t3计提折旧了没有生成凭证
  • 库存股的处理方式
  • 购车预付款交了可以退吗
  • 补税的会计分录
  • 会计账户分类是什么意思
  • 预付款项给供应商合法吗
  • 同比增长怎么算出来的
  • 年数总和法净残值怎么算
  • 一家企业至少要运转几个月以上
  • linux系统中怎么输入中文
  • win8系统没有wifi
  • centos安装虚拟机教程
  • window mobile系统
  • node.js连接数据库的代码
  • fastcgi iis
  • unity引擎占用内存多少
  • unity最新教程
  • javascript简单代码
  • 税务局三级主办是副科吗
  • 江苏省生育登记服务网
  • 辽宁地方税务局招聘
  • 深圳税务局怎么添加办税员
  • 福建泉州电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设