www.zhnq.net > SQL SErvEr 中的 NOLOCK 到底是什么意思?

SQL SErvEr 中的 NOLOCK 到底是什么意思?

一般用于此类语句中:select * from t with(NOLOCK) nolock是不加锁查询,可以读取被事务锁定的数据,也称为脏读.说明:使当前会话的查询,不受其它会话的事务所阻塞.但是这样做,就读取了其它事务的“修改后未提交的”数据.也就是允许“READ UNCOMMITTED”

这里的with()叫做语句提示,即告诉数据库引擎要以什么方式查询表nolock是不加锁查询,可以读取被事务锁定的数据,也称为脏读

默认情况下对表是 lock

NOLOCK是指在多用户存取数据库时别的用户是否对某一纪录或表加锁,如果加锁了,就不更新,等锁被释放后再更新.避免数据的"脏读".http://blog.csdn.net/riyao/article/details/8113372

mysql的nolock在DB2中可以通过在语句最后加上with UR,来实现.DB2的所隔离级别分为四类:1、ur(Uncommited Read) 就是俗称“脏读“,在没有提交数据的时候能够读到更新的数据;2、cs(Cursor Stability) 在一个事务中进行查询时,允许读取提交前的数据,数据提交后,当前查询就可以读取到数据,update数据的时候并不锁表3、rs(Read Stability) 在一个事务中进行查询时,不允许读取其他事务update的数据,允许读取到其他事务提交的新增数据4、rr(Repeatable Read) 在一个事务中进行查询时,不允许任何对这个查询表的数据修改

区别是:跨服务器查询语句时 不能用with (nolock) 只能用nolock同一个服务器查询时 则with (nolock)和nolock都可以用.比如select * from [IP].a.dbo.table1 with (nolock) 这样会提示用错误.select * from a.dbo.table1 with (nolock) 这样就可以.要提

加上了nolock可能会读取未提交的事务或一组在读取中间回滚的页面,有可能发生脏读.

nolock 是 SQL Server 特有的啊.就是 对于一个表 A.我 更新了一行, 还没有 Commit 那么你 SELECT * FROM A, 就卡住了.要 SELECT * FROM A (nolock);但是 MySQL 没有这方面的问题啊.就是 对于一个表 A.我 更新了一行, 还没有 Commit 那么你 SELECT * FROM A, 将查询到 我更新以前的原始数据记录.不会卡住啊.

SQL Server2008 由于数据移动,无法继续以 NOLOCK 方式扫描,怎么解决?A1200E_CMCC_Nolock_R541_G_11.50.41P这个是A1200E最新的包.我想刷这个包只要不是原版刷机包,都可以装PKG

SQL SERVER里的锁机制:NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”

网站地图

All rights reserved Powered by www.zhnq.net

copyright ©right 2010-2021。
www.zhnq.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com