我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sqlserver中with(nolock)的作用是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sqlserver中with(nolock)的作用是什么

这期内容当中小编将会给大家带来有关sqlserver中with(nolock)的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAST 。有关 NOLOCK 和 READPAST的一些技术知识点: 对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题。 NOLOCK 和 READPAST 都是处理查询、插入、删除等操作时候,如何应对锁住的数据记录。但是这时候一定要注意NOLOCK 和 READPAST的局限性,确认你的业务逻辑可以容忍这些记录的出现或者不出现: 

简单来说: NOLOCK 可能把没有提交事务的数据也显示出来. READPAST 会把被锁住的行不显示出来 不使用 NOLOCK 和 READPAST ,在 Select 操作时候则有可能报错误:事务(进程 ID **)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。 

下面就来演示这个情况 为了演示两个事务死锁的情况,我们下面的测试都需要在SQL Server Management Studio中打开两个查询窗口。保证事务不被干扰。 演示一 没有提交的事务,NOLOCK 和 READPAST处理的策略: 查询窗口一请执行如下脚本: CREATE TABLE t1 (c1 int IDENTITY(1,1), c2 int) go BEGIN TRANSACTION insert t1(c2) values(1) 在查询窗口一执行后,查询窗口二执行如下脚本: select count(*) from t1 WITH(NOLOCK) select count(*) from t1 WITH(READPAST) 

结果与分析: 查询窗口二依次显示统计结果为: 1、0 查询窗口一的命令没有提交事务,所以 READPAST 不会计算没有提交事务的这一条记录,这一条被锁住了,READPAST 看不到;而NOLOCK则可以看到被锁住的这一条记录。 如果这时候我们在查询窗口二中执行: select count(*) from t1 就会看到这个执行很久不能执行完毕,因为这个查询遇到了一个死锁。 清除掉这个测试环境,需要在查询窗口一中再执行如下语句: ROLLBACK TRANSACTION drop table t1 

演示二:对被锁住的记录,NOLOCK 和 READPAST处理的策略 这个演示同样需要两个查询窗口。 请在查询窗口一中执行如下语句: CREATE TABLE t2 (UserID int , NickName nvarchar(50)) go insert t2(UserID,NickName) values(1,'郭红俊') insert t2(UserID,NickName) values(2,'蝈蝈俊') go BEGIN TRANSACTION update t2 set NickName = '蝈蝈俊.net' where UserID = 2 

请在查询窗口二中执行如下脚本: select * from t2 WITH(NOLOCK) where UserID = 2 select * from t2 WITH(READPAST) where UserID = 2 

结果与分析: 查询窗口二中, NOLOCK 对应的查询结果中我们看到了修改后的记录,READPAST对应的查询结果中我们没有看到任何一条记录。这种情况下就可能发生脏读

上述就是小编为大家分享的sqlserver中with(nolock)的作用是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sqlserver中with(nolock)的作用是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sqlserver中with的用法是什么

在SQL Server中,WITH关键字通常用于创建临时命名的结果集,这个结果集可以在后续的查询中被引用。这种用法也被称为Common Table Expressions(CTE)。WITH语句的基本语法如下:WITH cte_name
sqlserver中with的用法是什么
2024-04-09

sqlserver中row_number的作用是什么

在SQL Server中,ROW_NUMBER函数用于为结果集中的每一行分配一个唯一的连续编号。ROW_NUMBER函数常用于以下几种情况:分页查询:可以根据ROW_NUMBER的值来实现分页功能,例如根据ROW_NUMBER的值来筛选出
sqlserver中row_number的作用是什么
2024-04-09

sqlserver中decimal的作用是什么

在SQL Server中,decimal数据类型用于存储精确数值,通常用于表示货币金额或其他需要精确计算的数值。decimal数据类型具有固定的精度和小数位数,因此适合用于需要精确计算的场景,避免浮点数计算带来的精度问题。通常情况下,dec
sqlserver中decimal的作用是什么
2024-04-09

sqlserver中distinct的作用是什么

在SQL Server中,DISTINCT 关键字的作用是从查询结果中去除重复的记录,只返回唯一的记录。它常被用于SELECT语句中,确保返回的数据集中不会包含完全相同的行。使用场景示例想象一下,如果你有一个包含多个列的表,比如员工表E
sqlserver中distinct的作用是什么
2024-04-09

sqlserver中select into的作用是什么

在SQL Server中,SELECT INTO语句用于将查询结果插入到新表中。它的作用是将查询结果存储在新的表中,可以方便地将一个表的数据复制到另一个表中,或者创建一个新的表并将查询结果存储在其中。SELECT INTO语句可以一次性完成
sqlserver中select into的作用是什么
2024-04-09

sqlserver中dateadd函数的作用是什么

在 SQL Server 中,DATEADD 函数用于在指定日期上添加或减去一个指定的时间间隔。它的作用是根据指定单位(年、月、日、小时、分钟等)将指定日期增加或减少一定的数量。DATEADD 函数的语法如下:DATEADD (date
sqlserver中dateadd函数的作用是什么
2024-04-09

sqlserver中cast函数的作用是什么

在SQL Server中,CAST函数用于将一个数据类型转换为另一个数据类型。例如,如果您有一个字符串类型的列,但希望将其转换为整数类型,则可以使用CAST函数来实现这一转换。CAST函数提供了灵活性,使您能够在不同数据类型之间进行转换,以
sqlserver中cast函数的作用是什么
2024-03-05

sqlserver游标的作用是什么

SQL Server游标用于在结果集中逐行遍历数据。它允许开发人员在数据集合中操作每一行数据,执行特定的操作或者检查每一行是否符合特定的条件。游标可以用来实现复杂的数据处理逻辑,但是一般情况下应当尽量避免使用游标,因为它比其他方法(如集合操
sqlserver游标的作用是什么
2024-04-08

sqlserver表分区的作用是什么

SQL Server表分区的作用包括以下几点:提高性能:表分区可以将数据分散存储在不同的物理存储介质上,从而提高查询性能和数据加载速度。通过分区可以实现并行查询和并行加载,减少数据访问的瓶颈。管理维护:表分区可以更方便地管理和维护大型表,可
sqlserver表分区的作用是什么
2024-04-20

pgsql中with的用法是什么

在 PostgreSQL 中,WITH 关键字用于创建一个临时的命名查询,也被称为"common table expression"(通用表表达式)。WITH 语句可以用于简化复杂查询,提高查询的可读性和可维护性。WITH 语句的基本语法
pgsql中with的用法是什么
2024-03-15

sqlserver中row_number的用法是什么

在 SQL Server 中,ROW_NUMBER() 函数用于为结果集中的行分配唯一的连续编号。它常用于排序和分页操作。语法:ROW_NUMBER() OVER (ORDER BY column_name1 [, column_nam
sqlserver中row_number的用法是什么
2024-04-09

sqlserver中distinct的用法是什么

在 SQL Server 中,DISTINCT 关键字用于返回唯一不同的值,并且用于过滤重复的记录。它通常与 SELECT 语句一起使用,例如:SELECT DISTINCT column1, column2FROM table_nam
sqlserver中distinct的用法是什么
2024-04-09

SQLServer中offset的用法是什么

在SQL Server中,OFFSET的用法是用于分页查询,它指示查询结果应该从哪一行开始返回。OFFSET子句接受两个参数,第一个参数是要跳过的行数,第二个参数是要返回的行数。例如,假设有一个名为"employees"的表,包含以下字段
SQLServer中offset的用法是什么
2024-04-09

​sqlserver中rowcount的用法是什么

SQLServerROWCOUNT用法ROWCOUNT系统函数可返回受Transact-SQL语句影响的行数,用于:确定影响的行数分页查询限制数据修改操作性能优化ROWCOUNT主要用于验证数据操作是否预期执行和分页查询,限制返回行数大小以提高性能。它适用于INSERT、UPDATE、DELETE和TRUNCATE操作,但无法用于SELECT语句和游标。
​sqlserver中rowcount的用法是什么
2024-04-12

mysql中with...as的用法是什么

mysql中with...as的用法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近无意中接触到了一篇文章,里面写了一个SQL的用法,是with...as,中午抽空
2023-06-29

编程热搜

目录