RAC 里边的锁机制ITeye头条 - 亚美娱乐

RAC 里边的锁机制ITeye头条

2019-02-02 10:46:03 | 作者: 访烟 | 标签: 机制,数据,进程 | 浏览: 7373

RAC 里边的锁机制
一般的锁lock,是用来操控并发的数据结构, 就是说假如有两个进程一起修正同一个数据, 为
了避免呈现紊乱和意外, 用锁来操控拜访数据的次第。有锁的能够先拜访,其他一个进程要等
到第一个开释了锁,才干具有锁,持续拜访。

整体来说,RAC里边的锁分两种, 一种是本地主机的进程之间的锁,其他一种是不同主机的进程
之间的锁。
本地锁机制
ORACLE的数据是依照数据块规划的, 每个用户session都会有一个署理进程来履行相应的数据
操作, 而这时分还会有其他的许多用户session, 也各自有自己的署理进程, 他们很可
能对同一个记载做改动。由于体系的记载有千百万条,所以正确的规划一个好的锁机制,
关于体系功能和维护是十分重要的, 不然稍不留意, 将会形成极大的功能糟蹋。

所以oracle在规划本地进程的锁的时分,采用了两种机制,一类叫做lock,其他一类叫做
latch.lock用来完结咱们常见的大部分数据的维护, 比方记载的行级锁, 而latch一般在遍历
某些数据链表的时分用来维护这些要害数据。

这样分类和锁的功率有关, 由于一般的锁十分的耗时,好很长时刻才干开释,可能要消耗成百
上千个硬件操作,所以oracle专门针对需求短时刻的数据维护规划了一种特其他锁,叫
latch,只需几个硬件操作就能够完结。用来对某些特其他数据结构的维护。

常见的lock是行级锁, 原理比较简单,就是针对每个业务,在每个数据块的头上,记载上这个
业务号的详细信息,然后在数据快里边的每个记载后边,也记载一下这个业务的编号,
这样当下一个业务到来的时分, 他也在数据块的头上,记载了自己的信息, 可是他查看到这
个记载的时分,发现已经有其他业务抢先了, 不行进行操作, 只能把针对这个记载的修
改排到行列里边, 等候后边完结。

  不同主机间的锁机制

在不同主机间的锁,oracle采用了DLM(Distributed Lock Management)机制, 这儿就有一个粒
度的问题,怎么规划锁的粒度,让功能到达最优?

咱们知道,在ORACLE RAC里边,数据是大局同享的, 就是说每个进程看到的数据块都是相同
的,在不同机器间,数据块能够传递。DLM 规划的这个锁的粒度就往上调了一级,到了数
据块等级, 而不是行级, 由于在多个机器间同享行级锁实在是太消耗资源了

针对不同类型的数据块, 比方某些metadata 或许很少改动的数据块, 和其他那些包括数据记
录内容的数据块, DLM的操作机制也是不相同的。

假如是metadata,那么RAC的每个锁进程在确定本地数据块的时分,发一个播送信息给其他的节
点,通知他们对应的锁,经过播送机制完结不同主机之间的内容同步。

关于数据块, 有经过一个GRD 的表格, 这个表格里边记载的一切的数据块在各个机器上的分
布,和当时谁有最新的版别,假如有某个主机对其进行了修正,需求经过这个GRD表做个更
新,其他主机进程假如也需求改动这个数据块,就从GRD里边查谁有最新的版别,然后要求前面的主
机把这个数据块传送过来,再做改动, 最终需求把改动同步到磁盘上, 确保一至性。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    truncate,delete,drop的异同sohu

    句子,数据,业务
  • 2
  • 3

    Oracle常用命令dongfang

    常用命令,数据库,调用
  • 4
  • 5
  • 6
  • 7

    Catalog与Schemaalibaba

    数据,数据库,环境
  • 8
  • 9

    mysql5 解压缩版装置ITeyedongfang

    装置,数据库,用户
  • 10

    RAC 里边的锁机制ITeye头条

    机制,数据,进程