WITH (NOLOCK)
来源:互联网 发布:ubuntu snmp 安装 编辑:程序博客网 时间:2024/06/06 20:27
WITH (NOLOCK)
缺点:
1.会产生脏读
2.只适用与select查询语句
优点:
1.有些文件说,加了WITH (NOLOCK)的SQL查询效率可以增加33%。
2.可以用于inner join 语句
脏读: 一个用户对一个资源做了修改,此时另外一个用户正好读取了这条被修改的记录,然后,第一个用户放弃修改,数据回到修改之前,这两个不同的结果就是脏读。
详细内容:
要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑。其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能。
不过有一点千万要注意的就是,WITH (NOLOCK)的SQL SELECT有可能会造成Dirty Read(脏读)。
例如:
FROM EMPLOYEEWITH (NOLOCK)
JOIN WORKING_GROUPWITH (NOLOCK)
ON EMPLOYEE.UserID= WORKING_GROUP.UserID
除了简单的SELECT之外,有JOIN的SELECT语法也是可以使用的。但是DELETE、INSERT、UPDATE这些需要transaction的指令就不行了…
有些文件说,加了WITH (NOLOCK)的SQL查询效率可以增加33%。
加了WITH (NOLOCK)即告诉SQL Server,我们的这段SELECT指令无需去考虑目前table的transaction lock状态,因此效能上会有明显的提升,而且数据库系统的Lock现象会有明显的减少(包含Dead Lock)。
有一点要特别注意,因为WITH (NOLOCK)不考虑目前table的transaction lock,因此当有某些资料正处于多个phase交易(例如跨多个table的transaction交易-->如提款系统),WITH (NOLOCK)会让目前处理交易process的数据被忽略…
讲白话一点,也就是说当使用NoLock时,它允许阅读那些已经修改但是还没有交易完成的数据。因此如果有需要考虑transaction事务数据的实时完整性时,使用WITH (NOLOCK)就要好好考虑一下。
如果不需考虑transaction,WITH (NOLOCK)或许是个好用的参考。
注1:WITH ( < table_hint > )
指定由查询优化器使用的表扫描、一或多个索引,
或由查询优化器利用此数据表以及为此语句使用锁定模式。
注2:WITH (NOLOCK)相当于READ UNCOMMITTED
- WITH(NOLOCK)
- With (NoLock)
- WITH (NOLOCK)
- WITH (NOLOCK)
- WITH (NOLOCK)
- WITH (NOLOCK)
- WITH (NOLOCK)
- with(nolock)
- WITH( NOLOCK)
- WITH (NOLOCK)
- WITH (NOLOCK)
- WITH (NOLOCK)
- with(nolock)解释[转]
- with(nolock)详解【转】
- SqlServer with(nolock)
- SQL with (nolock)
- SqlServer WITH (NOLOCK)详解
- with(nolock) 的作用
- 展讯 List控件的一些基础结构
- linux PS命令
- html 垂直居中
- 多态、动态类型和动态绑定
- 关于c#中的事件
- WITH (NOLOCK)
- UIPanGestureRecognizer类——为view添加手势
- ALSA SOC在Linux3.1上的一些改进
- plsql远程连接oracle数据库(适用于电脑没有安装oracle数据库)
- 开发者证书下载 安装
- C#操作Excel 基本常规语句
- Map ,Hashmap,HashTable,LinkedHashMap
- IIS在Win 2003初始配置导致打开网页 正在建设中 的解决办法 .
- 谷歌开源JavaScript内存泄露检测工具 Leak Finder