• 话说两种oracle锁类型 TX与TM


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

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

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

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

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

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

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

  • 相关阅读:
    hive sql的常用日期处理函数总结
    超详细的六款主流ETL工具介绍及功能对比
    什么是ETL?
    什么是星型模型和雪花型模型,以及区别
    深入解读和应用RFM分析方法(模型)
    分析方法
    Kimball和Inmon方法论的适用场景比较
    数字化转型的本质(10个关键词)
    64个数据分析常用语
    @Transactional
  • 原文地址:https://www.cnblogs.com/kundij/p/2473691.html
Copyright © 2020-2023  润新知