- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10闩锁锁定和并发性ppt课件
再次查询,发现已经没有了锁定。 一个事务不管更新多少行数据,都只获得了一个TX锁。 如果一个表上有TX锁定,那么会有一个RX锁定在TM上 如果要删除这个表,那么需要得到这个表的X锁,RX和X是冲突的,因此会报错。 会话A 会话B 会话A是可以的 一个事务不管更新了多少行数据,只能获得一个TX锁,但是可以获得多个TM锁 TX锁定与事务个数相同,而TM锁定则与被更新的表的个数相同 在数据库系统中,我们同时可以获得的TX锁定的总个数由初始化参数transactions决定,而可以获得的TM锁定的个数则由初始化参数dml_locks决定 默认情况下,同时可以启动187个事务,也就是获得187个TX锁定,以及获得748个TM锁定。也就是说,平均每个事务更新4个表(748/187=4) 当前的资源使用情况 曾经达到过的最大资源使用情况 可以使用的最大资源 两个参数修改以后,需要重新启动实例。 假设当前存在两个session(以A和C来表示),如果A持有C正在申请的锁定,同时C也持有A正在申请的锁定时,这时发生死锁现象。死锁是典型的“双输”情况,如果任其发展,则会出现A和C这两个session正在执行的事务都无法结束的现象。因此,在Oracle数据库中,造成死锁的那个DML语句会被撤销。死锁总是由于应用程序设计不合理引起的。 死锁被检测到,自动解除了死锁,回滚了一个语句。 DDL锁定 当我们发出DDL命令时,会自动在被处理的对象上添加DDL锁定,从而防止对象被其他用户所修改。当DDL命令结束以后,则释放DDL锁定。我们不能显式地请求一个DDL锁定,只有当对象结构被修改或者被引用时,才会在对象上添加DDL锁定。比如创建或者编译存储过程时会对引用的对象添加DDL锁定。在创建视图时,也会对引用的表添加DDL锁定等。 在执行DDL命令之前,Oracle会自动添加一个隐式提交命令,然后执行具体的DDL命令,在DDL命令执行结束之后,还会自动添加一个隐式提交命令。实际上,Oracle在执行DDL命令时,都会将其转换为对数据字典表的DML操作。比如我们发出创建表的DDL命令时,Oracle会将表的名称插入数据字典表tab$里,同时将表里的列名以及列的类型插入col$表里等。因此,在DDL命令中需要添加隐式的提交命令,从而提交那些对数据字典表的DML操作。即使DDL命令失败,它也会发出提交命令。 会话A 会话B DDL锁定具有以下三种类型 1、排他的DDL锁定 Exclusive DDL Lock 大部分的DDL操作都会在被操作的对象上添加排他的DDL锁定,从而防止在DDL命令期间,对象被其他用户修改,当对象添加了排他的DDL锁定以后,该对象上不能再添加任何其他的DDL类型,如果是对表进行DDL,则其它进程也不能修改表里的数据 2、共享的DDL锁定 Shared DDL Lock 用来保护被DDL的对象不被其他用户进程更新,但是允许其它进程在对象上添加共享的DDL锁定,如果是对表进行DDL命令,则其它进程可以同时修改表里的数据 例如create view命令创建视图的时候,在视图中所引用的表上添加的就是共享的DDL锁定,创建视图的时候,其他用户不允许修改表结构,但是可以更新数据 3、可打破的解析锁定Breakable Parsed Lock 在shared pool里缓存的SQL游标、PL/SQL代码都会获得引用对象上的解析锁定,如果我们发出DDL命令修改了某个表的结构时,该对象相关的、位于shared pool里的解析锁定就会被打破,从而导致引用了该对象的SQL游标或者PL/SQL程序代码全都失效,下次再执行相同的SQL语句时,需要重新解析,这就是所谓的SQL语句的reload,可打破的解析锁定不会阻止其他的DDL锁定,如果发生与解析锁定相冲突的DDL锁定,则解析锁定也会被打破 注意:DDL语句有很多种,不只是建立和删除表 1、最主要的还是排他的DDL锁定,建立、删除、修改对象的时候,特别是表、索引等,这些操作花费的时间长,发生锁定冲突的几率高 发生这个锁定的时候,要注意锁定后的效果是什么? 2、另外就是一些类似于create view之类的语句,在建立的时候,需要被引用的对象的结构不要发生变化,但是数据可以发生变化,这种非常适合共享的DDL锁定 3、还有一类就是可打破的解析锁定 Shared pool里的SQL游标、PL/SQL等,引用的对象,如果对象发生了变化,例如被删除,那么解析锁定被打破,这个锁定只是起到了连接的作用,并没有锁定的意义,勉强算作锁定 实验DDL锁定 建立了一个存储过程 开启了三个session 159 147 143 停止159的执行以后,147的重编译就能够执行,143的drop也就能够
您可能关注的文档
最近下载
- CFturbo中文教程[参考].pdf
- 新高考英语读后续写满分攻略:动作描写三大妙招(解析版).docx VIP
- 农业昆虫学:第七章 茶树害虫.ppt
- 新高考英语读后续写满分攻略:动作描写三大妙招(原卷版).docx VIP
- 新高考英语读后续写满分攻略:三大出彩收尾设计(解析版).docx VIP
- 2025年铜陵郊区陈瑶湖镇招聘乡村振兴专干和村级后备干部3人笔试模拟试题及答案解析.docx VIP
- 中级消防监控证考试题库免费.pdf
- 山东省临沂市沂水县七年级上期末数学试卷(含答案解析).pdf VIP
- 科主任年终工作总结.docx VIP
- 新高考英语读后续写满分攻略:读后续写 三大出彩收尾设计.pptx VIP
文档评论(0)