• 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
  • 相关阅读:
    在线学习VIM
    对三叉搜索树的理解
    Suffix Tree
    Skip list
    中文分词算法
    土豆的seo
    Gentle.NET文档(链接)
    a标签的link、visited、hover、active的顺序
    html dl dt dd标签元素语法结构与使用
    WEBZIP为什么打不开网页
  • 原文地址:https://www.cnblogs.com/zmc60/p/15778664.html
Copyright © 2020-2023  润新知