- 浏览: 97582 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (133)
- jQuery (11)
- XML (3)
- 组件 (1)
- JAVA (20)
- WEB (3)
- SPRING (6)
- HIBERNATE (5)
- AJAX (2)
- JS (1)
- JAVA webservice (1)
- Ditu (1)
- WEBSITE (1)
- HIBERNATE ANNOTATION (1)
- 排序 (1)
- TCP_NODELAY (1)
- ConvertUtils (1)
- Logistics (1)
- SQL SERVER 中identity (4)
- sql server (35)
- MYSQL (1)
- Eclipse (6)
- ORACLE (6)
- FLEX (4)
- notepad++ (0)
- UNION ALL (1)
- JUnit (3)
- SQL 异常处理 (1)
- @@trancount (1)
- IOS (1)
- ORA-02266 (1)
- REMOTE DESKTOP (0)
- HTML 优化 (1)
- CRLF (1)
- SQL Server Sequence (1)
最新评论
-
zjuttsw:
看的舒服
重要的hashcode equals转载
http://www.cnblogs.com/henw/archive/2011/07/22/2113580.html
缺点:
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(脏读)。
例如:
SELECT COUNT(UserID)
FROM EMPLOYEE WITH (NOLOCK)
JOIN WORKING_GROUP WITH (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
缺点:
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(脏读)。
例如:
SELECT COUNT(UserID)
FROM EMPLOYEE WITH (NOLOCK)
JOIN WORKING_GROUP WITH (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
发表评论
-
SQL Server Profiler使用方法
2014-05-21 16:55 605http://lyt7599.blog.163.com/blo ... -
SQL Server Error Message
2014-05-20 20:20 1291http://www.sql-server-helper.co ... -
SQL锁的概述
2014-05-16 14:39 402http://blog.csdn.net/htl258/art ... -
SET...
2013-12-31 11:16 314http://msdn.microsoft.com/en-us ... -
DATE
2013-12-30 15:23 441http://blog.csdn.net/dba_huangz ... -
DATE AND TIME
2013-12-30 14:22 545SELECT (CAST((SELECT SUBSTRING( ... -
Microsoft SQL Server, Error:9002
2013-09-25 17:48 1026一般在建立一个database之后,就应该手动设置其日志的增长 ... -
SQL 2005 with(nolock)详解
2013-08-26 15:46 576http://hi.baidu.com/gabriel/ite ... -
EXISTS AND NOT EXISTS
2013-07-16 14:51 456EXISTS或者NOT EXISTS是把主查询的字段传到后边的 ... -
is invalid in the select list because it is not contained in either an aggregate
2013-07-11 10:37 933当select 语句块中出现function与常列时,需要在w ... -
A interesting article for printing statement in sql
2013-07-09 11:57 420http://bytes.com/topic/sql-serv ... -
Good net website blog for Database
2013-07-09 11:53 766http://www.bluegecko.net/mysql/ ... -
how to search a function or sto in database
2013-07-08 14:02 674SELECT * FROM sysobjects WHERE ... -
Good SQL WEBSITE 细说Sql Server中的视图(上)(更新)
2013-07-08 11:38 508http://www.cnblogs.com/xbf321/a ... -
SQLServer : EXEC和sp_executesql的区别
2013-07-08 11:36 540http://www.cnblogs.com/xbf321/a ... -
Search for a stored procedure
2013-07-08 11:27 624September 3, 2007 by Pinal Dave ... -
TRUNCATE TABLE
2013-06-27 10:43 467默认情况下,IDENTITY_INSER就是off 这种情况下 ... -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2013-06-18 14:08 543http://www.cnblogs.com/freshman ... -
安装了SQL以后,编写SQL语句没有提示
2013-06-18 09:55 551安装了SQL以后,编写SQL语句没有提示解决办法: 工具— ... -
局部临时表VS全局临时表
2013-06-13 14:37 3649http://blog.csdn.net/wu_qiongle ...
相关推荐
标题“EFCore.SqlServer.WithNoLock”涉及到的是在C#编程环境中使用Entity Framework Core(简称EF Core)与SQL Server数据库进行交互时,如何利用“WITH (NOLOCK)”提示来提高查询性能。这是一个针对数据库事务隔离...
缺点: 1.会产生脏读 2.只适用与select查询语句 优点: 1.有些文件说,加了WITH (NOLOCK)的SQL...其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环
在SQL Server中,`WITH (NOLOCK)`和`READPAST`是两种不同的事务隔离级别,它们用于处理并发控制和避免死锁问题。在处理数据库死锁时,这两个选项经常被推荐作为解决策略,但使用时需谨慎,因为它们可能会引入其他...
然而,除了索引优化,使用`WITH (NOLOCK)`或`NOLOCK`也可以帮助减少锁竞争,提升查询效率。在SQL命令中添加`WITH (NOLOCK)`,可以防止数据集在大量并发查询时被锁定,降低系统资源消耗,从而提高整体性能。 然而,`...
然而,如果在读取数据时使用了`WITH(NOLOCK)`这样的SQL提示符,那么可以实现无锁读取,这在大数据查询或低并发环境下可能是一个有效的优化策略。 无锁读取(NOLOCK)的使用需谨慎,因为它可能会读取到未提交的数据...
查询完成后,你不应该忘记手动关闭它们,除非使用`WITH NOLOCK`选项来避免自动锁定。如果表已经打开,`SELECT`会使用`USE ... AGAIN`重新打开。 `SELECT`子句允许你指定一系列返回的结果,包括: 1. 通配符`*`代表...
2. **使用WITH NOLOCK提示**:在SELECT查询中添加此提示,允许读取脏数据,但可能导致不一致的结果。这仅适用于无事务备份,且数据一致性不重要的情况。 3. **计划备份在低峰时段**:安排备份在系统负载较低的时候...
Another type of table lock is a schema stability lock (Sch-S) and is compatible with all table locks except the schema modification lock (Sch-M). The schema modification lock (Sch-M) is incompatible ...
使用WITH NOLOCK避免锁定问题。 - **查询数据**:SELECT语句是最基本的操作,结合WHERE、GROUP BY、HAVING、ORDER BY等子句进行复杂查询。 ### 五、事务与并发控制 - **事务**:事务是一系列数据库操作的集合,...
在执行任何删除操作前,最好先备份数据或使用`WITH NOLOCK`提示来创建一个只读的临时视图。同时,也可以考虑使用`ALTER TABLE ... ADD CONSTRAINT`来添加唯一约束,以防止未来数据的重复插入。 综上所述,删除SQL ...
在SQL Server中,数据操作是数据库...在执行这些操作前,最好备份数据,或者使用`WITH NOLOCK`等提示来避免锁定问题,同时理解它们对数据库性能的影响。在处理大量数据时,合理规划事务管理和错误处理也是十分必要的。
SELECT ca.code,ca.name,ca.ParentCode,az.name,az.latitude,az.longitude FROM CarArea ca WITH(NOLOCK) LEFT JOIN ( SELECT * FROM AreaZoon WITH(NOLOCK) WHERE parentCode='0' ) az ON az.proshortname=ca....
- **推荐做法**:使用`UNION ALL`代替`UNION`以提高合并效率,如`SELECT * FROM A WITH (NOLOCK) WHERE Verify = 3 UNION ALL SELECT * FROM A WITH (NOLOCK) WHERE Verify = 1`。 - **不推荐做法**:直接使用`UNION...
代码如下:–获取表的count信息select count(*) from T with(nolock) –获取特定值的count信息select count(*) from T with(nolock)where v = ‘–value’ –获取表’T’的count信息select count(*) from T with...
(SELECT MAX(row_count) FROM sys.dm_db_partition_stats p WITH(NOLOCK) WHERE p.object_id = t.object_id AND p.index_id ) AS Rows, (SELECT COUNT(1) FROM dbo.syscolumns WITH(NOLOCK) WHERE id = t.object_...
SELECT * FROM PbMatchineItem WITH (NOLOCK) WHERE ISNUMERIC(remarks) <> 0 -- 只取数字记录(小) SELECT * FROM PbMatchineItem WITH (NOLOCK) WHERE ISNUMERIC(remarks) = 0 -- 不取数字记录 ``` 这段代码展示了...
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)