话说两种oracle锁类型 TX与TM

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/kundij/archive/2012/04/27/2473691.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值