4)3-way block request的实例
在此,与上一个实例不同的就是block的请求者与block的master、block的缓冲不在同一个node上。所以总体时间为:
R(send) + W(small msg) + S(process msg, send) + W(small msg) + S(process msg, process block, send) + W(block) + R(receive block)
当远程读被挂起,任何在请求Instance上的尝试读写缓冲在buffer中的data 的进程将等待gc buffer busy事件,直到block到达。
5)2-way grant实例
6)considered “Lost“ Blocks实例
如图,此情况为:在请求的block到达前先收到了side channel message。在普通环境中,这是不会发生的。多数情况下它是转换问题的显示或是缺少私有互联。这常与OS或是网络的配置问题有关。
note:可尝试避免此类现象的发生,通过减小参数DB_FILE_MULTIBLOCK_READ_COUNT的值,使其低于16 。
7)Global 队列等待overview
队列等待并不是RAC特有的,但是在RAC环境中涉及到Global lock的操作。多数对队列的Global请求是同步的,并且有前台进程等待。因此,队列冲突在RAC环境中更明显。多数队列等待发生在下列类型的队列:
* TX:transaction 队列,用于事务的划分和追踪
* TM:table或是partition队列,用于保护DML执行期间table的定义
* HW:高水位线队列,取得用于新的block操作的同步
* SQ:sequence队列,用于Oracle sequence number的序列化增加
* US:undo segment 队列,主要用于自动undo 管理(AUM)的特性
* TA:主要用于事务恢复的队列
上述情况下,等待是同时的,可能造成严重的序列化,从而导致RAC环境的恶化。