摘要:
背景:目前参与的一个项目,我发现一个问题,就是大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的就是查询是不锁定表,从而达到提高查询速度的目的。这点可能很多朋友在做开发时都会遇到,不过如果说系统中的每个查询语句中的表都加上nolock,您是否同意这么做呢?在回答这个问题前我先说下几个问题: 什么是并发访问:同一时间有多个用户访问同一资源,并发用户中如果有用户对资源做了修改,此时就会对其它用户产生某些不利的影响,例如: 1:脏读,一个用户对一个资源做了修改,此时另外一个用户正好读取了这条被修改的记录,然后,第一个用户放弃修改,数据回到修改之前,这两 阅读全文
摘要:
控制由连接发出的所有 Microsoft® SQL Server™ SELECT 语句的默认事务锁定行为。语法SET TRANSACTION ISOLATION LEVEL{ READ COMMITTED| READ UNCOMMITTED| REPEATABLE READ| SERIALIZABLE }参数READ COMMITTED指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。READ UNCOMMITTED执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可 阅读全文