网站大量收购闲置独家精品文档,联系QQ:2885784924

数据库事务和锁的详解.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.NET 提供的数据库事务隔离级别 SyationLevel 枚举用于指定连接的事务锁定行为,它包含如下枚举: 成员名称 说明 Chaos 无法改写隔离级别更高的事务中的挂起的更改。 ReadCommitted 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。 ReadUncommitted 可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。 RepeatableRead 在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。 Serializable 在 DataSet 上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。 Snapshot 通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。 Unspecified 正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。 当使用 OdbcTransaction 时,如果不设置 IsolationLevel 或者将 IsolationLevel 设置为 Unspecied,事务将根据基础 ODBC 驱动程序的默认隔离级别来执行。 说心里话,平时就是照着例子代码抄,也没理会这些值。不过要想真的理解并能灵活运用,看MSDN的解释估计感到困惑的不只我一个。从今天起,我决定要把这些值的真正含义搞清楚。首先,还是要去研究一下SQL Server的锁机制: SQL SERVER锁的机制 SQL server的所有活动都会产生锁。锁定的单元越小,就越能越能提高并发处理能力,但是管理锁的开销越大。如何找到平衡点,使并发性和性能都可接受是SQL Server的难点。 SQL Server有如下几种琐: 1、 共享锁 用于只读操作 SELECT ,锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他的用户写和修改。 2、 更新锁 更新锁是一种意图锁,当一个事务已经请求共享琐后并试图请求一个独占锁的时候发生更新琐。例如当两个事务在几行数据行上都使用了共享锁,并同时试图获取独占锁以执行更新操作时,就发生了死锁:都在等待对方释放共享锁而实现独占锁。更新锁的目的是只让一个事务获得更新锁,防止这种情况的发生。 3、 独占锁 一次只能有一个独占锁用在一个资源上,并且阻止其他所有的锁包括共享缩。写是独占锁,可以有效的防止’脏读’。 4、 意图缩 在使用共享锁和独占锁之前,使用意图锁。从表的层次上查看意图锁,以判断事务能否获得共享锁和独占锁,提高了系统的性能,不需从页或者行上检查。 5、 计划锁 Sch-M,Sch-S。对数据库结构改变时用Sch-M,对查询进行编译时用Sch-S。这两种锁不会阻塞任何事务锁,包括独占锁。 读是共享锁,写是排他锁,先读后更新的操作是更新锁,更新锁成功并且改变了数据时更新锁升级到排他锁。锁的类型有: DB数据库,由于 dbid 列已包含数据库的数据库 ID,所以没有提供任何信息 FIL文件 IDX索引 PG页,数据或索引页。页码。页由 fileid:page 组合进行标识,其中,fileid 是 sysfiles 表中的 fileid,而 page 是该文件内的逻辑页码。 KEY键,用于保护可串行事务中的键范围 TAB表,包括所有数据和索引在内的整个表。由于 ObjId 列已包含表的对象 ID,所以没有提供任何信息 EXT区域, 相邻的八个数据页或索引页构成的一组。正被锁定的扩展盘区中的第一个页码。页由 fileid:page 组合进行标识 RID行,表内已锁定行的行标识符。行由 fileid:page:rid 组合进行标识,其中,rid 是页中的行标识符。 细分锁的模式: 0 Null 没有得到资源的访问权限 1 Sch-S Schema stability 对查询进行编译时。能防止加锁的对象被删除直到解锁 2 Sch-M Schema Modification 改变数据库结构时发生。能防止其他的事务访问加锁的对象 3 IS Intent Shares 意图共享锁。 4 SIU Share Intent Update 意图在维护资源的共享锁时,把更新锁放到锁层次结构的下层资源上 5 IS-S Intent Share-shared 复合键范围锁 6 IX Intent Exclusive 意图排他锁 7 SIX Share Intent Exclusive 8 S Share 共享锁 9 U Update 更新锁。防止死锁 10 Iin-Nul Intent In

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档