zoukankan      html  css  js  c++  java
  • 话说两种oracle锁类型 TX与TM

      在oracle 里面,并不存在真正意义上的属于某个对象或者数据的锁,不会对某个表加锁或某几行加锁,oracle中的锁是以数据块的属性存在的,是物理的,并不是逻辑上的属于某个表或某一行的,也就是说,每个数据块本身就存储着自己数据块中的数据信息,这个地方叫ITL(Interested Transaction List),凡是在这个数据块上有活动的事务,它的信息就会记录在这里面供后续的操作查询,以保证事务一致性。

      TM其实是一个段级的共享锁,通常我们叫它表锁,是因为我们把它这个表看做一个段,当某个表有几个段的时候,比如对表进行分区,每一个分区在逻辑上就是一段,如果在某个分区上insert数据时,某个分区(段)上就会加了TM锁,那么将不能在这个段上进行DDL操作。TM共享锁允许同级别(或更低级别)的锁同时设置,但拒绝高级别的锁定请求。

      TX锁真正目的只是维护一个事务的完整性,更确切的说法,应该是它是一个事务锁,只要这个事务锁会在行级对数据产生影响(阻塞等),例如你在一个事务里对一个表做了1次,2次,3次,甚至更多次的update操作,这个事务所持有的TX锁一直都只有一个,所以我们经常说它是一个行级锁。

         如果你的系统有主,外键引用的关系,并且满足以上三个条件中的任意一个,那么你应该考虑给从表上的外键字段创建索引,否则系统的性能可能会下降甚至阻塞:

      1.主表上有频繁的删除操作。

          2.主键上有频繁的修改操作。

          3.业务上经常会出现主表和从表做关联的查询的情况。

  • 相关阅读:
    Visualvm 远程测试 问题
    jsp中文件下载的实现
    MYOB 的一些开发资料
    连接MYOB ODBC,在MyEclipse 下Commit成功,在Tomcat下单独运行,Commit显示Connection 已经关闭
    也说说学习
    objectivec static变量的使用总结
    objective里面的单例模式
    对函数式编程简单理解
    个人技术生涯的感悟(2)
    苹果键盘快捷键图标
  • 原文地址:https://www.cnblogs.com/kundij/p/2473691.html
Copyright © 2011-2022 走看看