RAC-GCS等待事件
GCS相关的等待事件
数据块相关的等待事件
– gc current block 2-way
– gc current block 3-way
– gc cr block 2-way
– gc cr block 3-way
如果你看到很多数据块相关的等待事件,说明之间有许多数据块在之间传递。主要是节点之间相同的数据块请求比较大。
current是指当前模式去修改一个数据块,2 way和3 way是指要跳几个节点。
cr表示一致性读,读取一个数据块的时候会产生这两个等待事件。
前面两个是指修改两个数据块的时候,后面两个是查询两个数据块的时候。
消息相关的等待事件
– gc current grant 2-way
– gc cr grant 2-way
消息和数据块是两种类型的东西,一种是数据块本身在实例和实例之间传递,另外是请求一个数据块或者查找一个数据块相关信息的时候发一些消息,所谓的消息其实就是一些授权,一种是以写的方式去请求,一种是以读的方式去请求。
gc current|cr grant 2-way
这个是消息传递时候大概的机制,比如instance1要去instance2上面去读一个数据块,首先去请求instance2上面的一个锁,要去请求数据库上面的一个锁,比如如图使用current的方式,即写数据块的方式去请求一个数据块这个时候就要请求一个锁。然后instance1通过LMS去请求instance2通过给instance2一个消息,instance2再通过LMS去返回消息,这样就是实例和实例之间消息的传递。注意,在这之间没有数据块的传递,只有消息的传递,这个就是授权的会话grant。
(LMS进程是在RAC环境下面最重要的一个进程,是处理全局的缓存,所谓的缓存就是数据库一个实例到另外一个实例数据的交换进程。)
LMS进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE
中传输块镜像。
当在某个数据块上发生一致性读时,LMS负责回滚该数据块,并将它copy到请求的实例上。
每个RAC节点至少有2个LMS进程。
也称作 GCS (Global Cache Services) processes.
2 way的意思是指两个节点,gc current|cr grant 2-way 是指发生在两个节点之间的授权。
gc current block 2-way
block是指数据块在几个节点之间的复制,上面是两个节点授权消息的传递,现在是两个节点数据块的传递,当instance1去请求数据块的时候先去master实例上面去找数据块在哪,master节点就告诉数据块在哪,如果这个数据块正好在master上面,master就会将这个数据块发给instance1,这个时候表现的等待事件就是gc current wait,因为instance1是以current的模式去请求,即要对请求的数据块修改,如果是以读的方式去请求数据块就是表现为gc cr wait,是以读的方式去请求。
上面说的都是GC在数据传递的时候可能出现的一些等待事件,通过等待事件可以知道RAC发生了哪方面的问题影响到了性能。
上面说的是一种是消息等待事件,一种是数据块传递的等待事件。
gc current block 3-way
现在有三个实例了,instance1去请求数据块的时候先去master这请求数据块在哪,master实例告诉instance1要请求的数据块在instance3上面,然后instance1和instance3建立会话。Instance3就将相应的数据给instance1。这个时候等待事件表现为3 way,即三个节点。
出现gc current block 3-way ,gc current block 2-way这两个等待事件大概来说就是许多节点之间要请求相同的数据块。也就是数据块均匀的分布在多个实例上面。这样就要考虑是否需要将业务进行一次分割。
上面都是块传递方面的等待事件,下面是块争用相关的等待
GCS相关的等待事件
块争用相关的等待
– gc current block busy
– gc cr block busy
– gc buffer busy
和上面同理,current是以修改的模式去请求,cr是读的方式去请求,gc buffer是整个数据块的请求。总之看到busy就是代表该数据块正在使用,比如去请求一个锁,一个实例持有这个锁并且还没有修改完。上面等待的主要原因是大量会话的修改,比如一个会话申请的资源被另外一个会话抢到了,这样造成等待。
负载相关的等待
– gc current block congested
– gc cr block congested
这两个等待事件很多就可以说明实例的负载很大了。
相关文章
- 【说站】python事件循环如何使用?
- JQuery的delegate事件参数说明[通俗易懂]
- 一个数据库文件引发的全美航班停飞事件
- 【Java AWT 图形界面编程】事件处理机制 ③ ( AWT 中常见的事件和事件监听器 | 低级事件 | 组件事件 | 窗口事件 | 鼠标事件 | 高级事件 | 动作事件 | 事件监听器 )
- Hystrix事件监听的使用(二)
- radio、checkbox在使用iCheck后,绑定选中事件详解编程语言
- Oracle 等待事件 direct path read 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 gc cr block lost 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 inactive session 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 log file sequential read 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 log file switch (archiving needed) 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Redo Transport Attach 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Shared IO Pool Memory 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Enqueues:DM,DatabaseMount 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Enqueues:N[A-Z],LibraryCachePin 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Enqueues:SQ,SequenceNumberEnqueue 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Enqueues:ST,SpaceManagementTransaction 官方解释,作用,如何使用及优化方法
- Oracle等待事件:解码其中的机密(oracle的等待事件)
- 巴西一数据库发生重大数据泄露事件:几乎所有巴西人受波及
- jquery下onpropertychange事件的绑定方法
- js修改table中Td的值(定义td的双击事件)
- 解析ajax事件的调用顺序
- js阻止冒泡及jquery阻止事件冒泡示例介绍