zoukankan      html  css  js  c++  java
  • 1.oracle性能优化之锁

    1.前言

    oralce的性能优化主要定位于三层:SQL层,会话层,以及系统层

    sql层:
      - 如果能从定位到sql,就不要从会话层面分析
      工具执行计划,10053,10046....

    会话层:
      - 如果能定位到会话,就不要从系统层面分析
      v$session,v$sesstat,v$session_wait,v$sql,v$lock,sql_trace

    系统层
      如果无法定位任何性能问题,从系统层面入手
      AWR(staspack),os tools(top,iostat)

    2.Oracle的锁

      oracle的锁主要分为两类:

      Enqueues  ----队列类型的锁,通常和业务相关的

      Latches  -----系统资源方面的锁,比如内存结构,SQL解析

    3.锁的原则

    1.只有被修改时,行才会被锁定。
    2.当一条语句修改了一条记录,只有这条记录上被锁定,在Oracle数据库中不存在锁升级
    3.当某行被修改时,它将阻塞别人对它的修改。
    4.当一个事务修改一行时,将在这个行上加上行锁(TX),用于阻止其它事务对相同行的修改
    5.读永远不会阻止写。
    6.读不会阻塞写,但有唯一的一个例外,就是select...forupdate
    7.写永远不会阻塞读。
    8.当一行被修改后,Oracle通过回滚段提供给数据的一致性读。

    4.锁的类型

     Oracle所得类型有很多中,但是我们最常见的两种锁是TM和TX

     TM表锁:发生在insert,update,delete以及select ..... for update操作时,目标是保证操作能够正常进行,并且阻止其它人对表执行DDL操作。

     TX锁 事务锁(行锁) 对于正在修改的数据,阻止其它会话进行修改

    5.演示

      这里有个update过程中的出现的锁

      

      这里使用了v$lock这个视图进行查看的,

      sid可以看成会话id,可以和v$sesssion关联

      type表示锁的类型,这里就主要看TM和TX锁了,

      block 0:表示未阻塞  其他 1: 表示阻塞其他线程了

      request 请求获取的数据的状态 0表示锁, 1-6表示锁的状态

    6.与v$lock相关的视图说明

    视图名 描述 主要字段说明
    v$session 查询会话的信息和锁的信息。 sid,serial#:表示会话信息。
    program:表示会话的应用程序信息。
    row_wait_obj#:表示等待的对象,和dba_objects中的object_id相对应。
    lockwait :该会话等待的锁的地址,与v$lock的kaddr对应.
    v$session_wait 查询等待的会话信息 sid:表示持有锁的会话信息。
    Seconds_in_wait:表示等待持续的时间信息
    Event:表示会话等待的事件,锁等于enqueue

      

    7.锁模式

    锁模式 锁定的sql 排斥的模式 允许的DML
    2 lock table t in row share mode; 6 select/insert/update/delete/for update
    3 lock table t in row exclusive mode; 4,5,6 select/insert/update/delete/for update 
    4 lock table t in share mode; 3,5,6 select
    5 lock table t in share row exclusive mode; 3,4,5,6 select
    6 lock table t in exclusive mode; 2,3,4,5,6 select
  • 相关阅读:
    数字签名(代码签名)流程
    (转)__cdecl __fastcall与 __stdcall
    装修主材
    ATL 获取flash信息
    Windows结构化异常
    格式化HRESULT获取对应文本
    which type of VS files should be committed into a version control system
    读Windows核心编程-5-作业
    IE WebBrowser事件触发
    Windows 结构化异常
  • 原文地址:https://www.cnblogs.com/zmc60/p/15778664.html
Copyright © 2011-2022 走看看