锁机制
NOLOCK和READPAST的区别。
1. 开启一个事务执行插入数据的操作。
BEGIN TRAN t
INSERT INTO Customer
SELECT 'a','a'
2. 执行一条查询语句。
SELECT * from Customer WITH (NOLOCK)
结果中显示"a"和"a"。当1中事务回滚后,那么a将成为脏数据。(注:1中的事务未提交) 。NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修改。
SELECT * from Customer
这条语句将一直死锁,直到排他锁解除或者锁超时为止。(注:设置锁超时SET LOCK_TIMEOUT 1800)
SELECT * from Customer WITH (READPAST)
这条语句将显示a未提交前的状态,但不锁定整个表。这个提示指明数据库引擎返回结果时忽略加锁的行或数据页。
3. 执行一条插入语句。
BEGIN TRAN t
INSERT INTO Customer
SELECT 'b','b'
COMMIT TRAN t
这个时候,即使步骤1的事务回滚,那么a这条数据将丢失,而b继续插入数据库中。
NOLOCK
1. 执行如下语句。
BEGIN TRAN ttt
SELECT * from Customer WITH (NOLOCK)
WAITFOR delay '00:00:20'
COMMIT TRAN ttt
注:NOLOCK不加任何锁,可以增删查改而不锁定。
INSERT INTO Customer SELECT 'a','b' –不锁定
DELETE Customer where ID=1 –不锁定
SELECT * from Customer –不锁定
UPDATE Customer SET Title='aa' WHERE ID=1 –不锁定
ROWLOCK
1. 执行一条带行锁的查询语句。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ -- (必须)
BEGIN TRAN ttt
SELECT * from Customer WITH (ROWLOCK) WHERE ID=17
WAITFOR delay '00:00:20'
COMMIT TRAN ttt
注:在删除和更新正在查询的数据时,会锁定数据。对其他未查询的行和增加,查询数据无影响。
INSERT INTO Customer SELECT 'a','b' –不等待
DELETE Customer where ID=17 –等待
DELETE Customer where ID<>17 –不等待
SELECT * from Customer –不等待
UPDATE Customer SET Title='aa' WHERE ID=17–等待
UPDATE Customer SET Title='aa' WHERE ID<>17–不等待
HOLDLOCK,TABLOCK和TABLOCKX
1. 执行HOLDLOCK
BEGIN TRAN ttt
SELECT * from Customer WITH (HOLDLOCK)
WAITFOR delay '00:00:10'
COMMIT TRAN ttt
注:其他事务可以读取表,但不能更新删除
update Customer set Title='aa' —要等待10秒中。
SEL ......
分享到:
相关推荐
事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误。设置事务隔离级别将影响整条连接。
用于备份MSSQL数据库的工具软件,可按指定的计划备份MSSQL数据库,并将备份后的文件下载到本地。 该程序是站长必备工具。主要解决个人站长无法定时备份数据库的问题。 个人站长所使用的 MSSql 数据库服务器上一般都...
MSSQL数据库SQL注入手册1
一、问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名)。其实操作就是对SQLServer查询记录,插入到MySQL里...
教你暴MSSQL数据库教你暴MSSQL数据库教你暴MSSQL数据库教你暴MSSQL数据库
电信设备-基于MSSQL数据库的SQL信息采集审计系统.zip
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例.docx
事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要 么全部成功,要么全部失败。 Consistency(一致性): 只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初 状态。 Isolation(隔离性):...
一个部门维护的简单实例,易语言操作mssql数据库。涉及连接数据库、新增、修改、删除、保存、打印数据表等基本操作。
MSSQL 性能监控 SQL语句 性能测试
Mssql数据库维护工具 v2.0 - 本工具由酉阳网盾科技独家开发 官方更新下载地址:http://www.itoa.cc/Download/DownShow.asp?id=57 主要功能如下: 1、目前测试支持Mssql 2000 、Mssql 2005、Mssql 2008。 2、修复置疑...
mssql数据库修复工具
针对连接mssql数据库写的一个连接字段保存工具.可选择保存在注册表或系统文件里面.
数据库数据对比工具(MSSQL版)是针对MS SQL Server的一款小工具,可以针对两个数据进行表结构和数据的对比。1、结构对比:如开发库和正式库之间的结构和数据同步,此工具可以告诉您哪个表结构有字段的增加减少,...
MSSQL数据库备份程序MSSQL数据库备份程序MSSQL数据库备份程序
Mssql数据库维护工具,适用于mssql2000
VB编写的MSSQL数据库连接测试工具,测试本机或远程的MSSQL数据库是否能够正常连接,程序没有其它的附加功能,需要编程实现连接MSSQL数据库的朋友可以把本程序作为一个功能模块单元来使用。
Mssql数据库系统安全加固规范.doc