数据库事务和锁的详解

数据库事务和锁的详解

ID:12007145

大小:48.50 KB

页数:4页

时间:2018-07-15

数据库事务和锁的详解_第1页
数据库事务和锁的详解_第2页
数据库事务和锁的详解_第3页
数据库事务和锁的详解_第4页
资源描述:

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

1、.NET提供的数据库事务隔离级别System.Data.IsolationLevel枚举用于指定连接的事务锁定行为,它包含如下枚举:成员名称说明Chaos无法改写隔离级别更高的事务中的挂起的更改。ReadCommitted在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。ReadUncommitted可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。RepeatableRead在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复

2、的读取,但是仍可以有幻像行。Serializable在DataSet上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。Snapshot通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。Unspecified正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。当使用OdbcTransaction时,如果不设置IsolationLevel或者将IsolationLevel设置为Un

3、specied,事务将根据基础ODBC驱动程序的默认隔离级别来执行。说心里话,平时就是照着例子代码抄,也没理会这些值。不过要想真的理解并能灵活运用,看MSDN的解释估计感到困惑的不只我一个。从今天起,我决定要把这些值的真正含义搞清楚。首先,还是要去研究一下SQLServer的锁机制:SQLSERVER锁的机制SQLserver的所有活动都会产生锁。锁定的单元越小,就越能越能提高并发处理能力,但是管理锁的开销越大。如何找到平衡点,使并发性和性能都可接受是SQLServer的难点。SQLServer有如下几种琐

4、:1、共享锁用于只读操作(SELECT),锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他的用户写和修改。2、更新锁更新锁是一种意图锁,当一个事务已经请求共享琐后并试图请求一个独占锁的时候发生更新琐。例如当两个事务在几行数据行上都使用了共享锁,并同时试图获取独占锁以执行更新操作时,就发生了死锁:都在等待对方释放共享锁而实现独占锁。更新锁的目的是只让一个事务获得更新锁,防止这种情况的发生。3、独占锁一次只能有一个独占锁用在一个资源上,并且阻止其他所有的锁包括共享缩。写是独占锁,可以有效的防止’脏读’。4

5、、意图缩在使用共享锁和独占锁之前,使用意图锁。从表的层次上查看意图锁,以判断事务能否获得共享锁和独占锁,提高了系统的性能,不需从页或者行上检查。5、计划锁Sch-M,Sch-S。对数据库结构改变时用Sch-M,对查询进行编译时用Sch-S。这两种锁不会阻塞任何事务锁,包括独占锁。读是共享锁,写是排他锁,先读后更新的操作是更新锁,更新锁成功并且改变了数据时更新锁升级到排他锁。锁的类型有:DB-----数据库,由于dbid列已包含数据库的数据库ID,所以没有提供任何信息FIL----文件IDX----索引PG-

6、----页,数据或索引页。页码。页由fileid:page组合进行标识,其中,fileid是sysfiles表中的fileid,而page是该文件内的逻辑页码。KEY----键,用于保护可串行事务中的键范围TAB----表,包括所有数据和索引在内的整个表。由于ObjId列已包含表的对象ID,所以没有提供任何信息EXT----区域,相邻的八个数据页或索引页构成的一组。正被锁定的扩展盘区中的第一个页码。页由fileid:page组合进行标识RID----行,表内已锁定行的行标识符。行由fileid:page:r

7、id组合进行标识,其中,rid是页中的行标识符。细分锁的模式:0Null没有得到资源的访问权限1Sch-S(Schemastability)对查询进行编译时。能防止加锁的对象被删除直到解锁2Sch-M(SchemaModification)改变数据库结构时发生。能防止其他的事务访问加锁的对象3IS(IntentShares)意图共享锁。4SIU(ShareIntentUpdate)意图在维护资源的共享锁时,把更新锁放到锁层次结构的下层资源上5IS-S(IntentShare-shared)复合键范围锁6IX

8、(IntentExclusive)意图排他锁7SIX(ShareIntentExclusive)8S(Share)共享锁9U(Update)更新锁。防止死锁10Iin-Nul(IntentInsert-Null)索引行层次的锁定,复合键范围锁11IS-X(IntentShare-Exclusive)12IU(IntentUpdate)意图更新锁13IS-U(IntentShareUpdate)串行更新扫描14X(

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

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

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