数据库中的锁机制

数据库中的锁机制

ID:12631471

大小:37.50 KB

页数:5页

时间:2018-07-18

数据库中的锁机制_第1页
数据库中的锁机制_第2页
数据库中的锁机制_第3页
数据库中的锁机制_第4页
数据库中的锁机制_第5页
资源描述:

《数据库中的锁机制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、锁机制NOLOCK和READPAST的区别。1.开启一个事务执行插入数据的操作。BEGINTRANtINSERTINTOCustomerSELECT'a','a'2.执行一条查询语句。SELECT*FROMCustomerWITH(NOLOCK)结果中显示”a”和”a”。当1中事务回滚后,那么a将成为脏数据。(注:1中的事务未提交)。NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修改。SELECT*FROMCustomer这条语句将一直死锁,直到排他锁解除或者锁超时为止。(注:设

2、置锁超时SETLOCK_TIMEOUT1800)SELECT*FROMCustomerWITH(READPAST)这条语句将显示a未提交前的状态,但不锁定整个表。这个提示指明数据库引擎返回结果时忽略加锁的行或数据页。3.执行一条插入语句。BEGINTRANtINSERTINTOCustomerSELECT'b','b'COMMITTRANt这个时候,即使步骤1的事务回滚,那么a这条数据将丢失,而b继续插入数据库中。NOLOCK1.执行如下语句。BEGINTRANtttSELECT*FROMCusto

3、merWITH(NOLOCK)WAITFORdelay'00:00:20'COMMITTRANttt注:NOLOCK不加任何锁,可以增删查改而不锁定。INSERTINTOCustomerSELECT'a','b'–不锁定DELETECustomerwhereID=1–不锁定SELECT*FROMCustomer–不锁定UPDATECustomerSETTitle='aa'WHEREID=1–不锁定ROWLOCK1.执行一条带行锁的查询语句。SETTRANSACTIONISOLATIONLEVELRE

4、PEATABLEREAD--(必须)BEGINTRANtttSELECT*FROMCustomerWITH(ROWLOCK)WHEREID=17WAITFORdelay'00:00:20'COMMITTRANttt注:在删除和更新正在查询的数据时,会锁定数据。对其他未查询的行和增加,查询数据无影响。INSERTINTOCustomerSELECT'a','b'–不等待DELETECustomerwhereID=17–等待DELETECustomerwhereID<>17–不等待SELECT*FROM

5、Customer–不等待UPDATECustomerSETTitle='aa'WHEREID=17–等待UPDATECustomerSETTitle='aa'WHEREID<>17–不等待HOLDLOCK,TABLOCK和TABLOCKX1.执行HOLDLOCKBEGINTRANtttSELECT*FROMCustomerWITH(HOLDLOCK)WAITFORdelay'00:00:10'COMMITTRANttt注:其他事务可以读取表,但不能更新删除updateCustomersetTitle

6、='aa'—要等待10秒中。SELECT*FROMCustomer—不需要等待2.执行TABLOCKXBEGINTRANtttSELECT*FROMCustomerWITH(TABLOCKX)WAITFORdelay'00:00:10'COMMITTRANttt注:其他事务不能读取表,更新和删除updateCustomersetTitle='aa'—要等待10秒中。SELECT*FROMCustomer—要等待10秒中。3.执行TABLOCKBEGINTRANtttSELECT*FROMCustom

7、erWITH(TABLOCK)WAITFORdelay'00:00:10'COMMITTRANttt注:其他事务可以读取表,但不能更新删除updateCustomersetTitle='aa'—要等待10秒中。SELECT*FROMCustomer—不需要等待UDPLOCK1.在A连接中执行。BEGINTRANtttSELECT*FROMCustomerWITH(UPDLOCK)WAITFORdelay'00:00:10'COMMITTRANttt2.在其他连接中执行。updateCustomers

8、etTitle='aa'whereID=1—要等10秒SELECT*FROMCustomer–不用等insertintoCustomerselect'a','b'–不用等注:对于UDPLOCK锁,只对更新数据锁定。注:使用这些选项将使系统忽略原先在SET语句设定的事务隔离级别(SETTransactionIsolationLevel)。事务隔离级别脏读:READUNCOMMITTED脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。