- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
20111029-数据库并发控制
丢失修改 丢失修改是指事务1与事务2从数据库中读入同一数据并修改 事务2的提交结果破坏了事务1提交的结果 导致事务1的修改被丢失。 不可重复读 不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。 三类不可重复读 事务1读取某一数据后: 1。事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。 2. 事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神密地消失了。 3. 事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。 读“脏”数据 事务1修改某一数据,并将其写回磁盘 事务2读取同一数据后 事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值 事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。 什么是封锁 封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 封锁是实现并发控制的一个非常重要的技术 基本封锁类型 DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁的类型决定的。 基本封锁类型 排它锁(eXclusive lock,简记为X锁) 共享锁(Share lock,简记为S锁) 排它锁(X锁) 排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁 共享锁(S锁) 共享锁又称为读锁 若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁 Oracle的并发控制 Oracle采用封锁技术保证并发操作的可串行性 Oracle锁的种类 字典锁 数据锁(亦称DML锁) 字典锁 ORACLE DBMS内部用于对字典表的封锁 由DBMS在必要的时候自动加锁和释放锁,用户无权控制 字典锁类型 语法分析锁 DDL锁 数据锁 数据锁类型 共享锁(S锁) 排它锁(X锁) 行级共享锁(RS锁) 行级排它锁(RX锁) 共享行级排它锁(SRX锁) 数据锁 封锁粒度 行级 表级 数据锁 数据封锁的两种方式 数据封锁由系统控制,对用户是透明的 允许用户用LOCK TABLE语句显式对封锁对象加锁 数据锁 ORACLE数据锁的特点 缺省情况下,读数据不加锁 ORACLE通过回滚段(Rollback Segment)来保证用户不读“脏”数据和可重复读。 优点:提高数据的并发度 数据锁 死锁 采用死锁诊断与解除法 周期性诊断系统中有无死锁 存在死锁,则撤消执行更新操作次数最少的事务 LOCK TABLE 允许用户显式对封锁对象加锁,语法为: LOCK TABLE [表/视图名] IN [封锁模式] MODE [NOWAIT]; Specify NOWAIT if you want the database to return control to you immediately [封锁模式] ROW SHARE (行共享锁, RS)permits concurrent access to the locked table but prohibits users from locking the entire table for exclusive access. ROW SHARE is synonymous with SHARE UPDATE, which is included for compatibility with earlier versions of Oracle Database. ROW EXCLUSIVE (行排他锁, RX) is the same as ROW SHARE, but it also prohibits locking in SHARE mode. ROW EXCLUSIVE locks are automatically obtained when updating, inserting, or deleting. [封锁模式] SHARE UPDATE(synonymous with ROW SHARE) SHARE (共享锁, S) SHARE permits concurrent queries but prohibits updates to the locked table. SHARE ROW EXCLUSIVE (共享行排他锁, SRX) is used to look at a whole table and to allow others to look at r
文档评论(0)