RAC高速缓存融合机制实现原理分析
这涉及到一系列的问题:
如何在集群节点之间的数据块版本之间获得分布图
你怎么知道哪个节点有当前版本
你怎样完成转会过程
这一系列问题的解决有赖于记忆融合技术(cachefusion)
cachefusion通过实例数据块之间通过高速privateinterconnect
这是RAC的核心工作机制,他将SGA的所有实例虚拟化为一个大SGA区域。
每当不同的实例请求相同的数据块时,需要在实例之间传递这个数据块。
在Oracle7的行动,这种转移是在磁盘上,也被称为磁盘basedping
也就是说,第一个实例必须首先将数据块写入磁盘,然后第二个实例从磁盘读取块。
这个磁盘完成数据传输,极大地影响了系统的性能。
在Oracle8i的净basedping介绍通过数据块通过privateinterconnect
但8i只能通过未被修改的数据块,和脏数据块通过磁盘,这是因为行动相同
在Oracle9i的cachefusion,所有的数据块,修改或不修改,可以通过privateinterconnect
系统可大幅度提高。
在cachefusion,每个数据块映射到一个cachefusion资源,或PCM资源。
PCM资源实际上是一个数据结构,资源的名称是DBA(数据块地址)。
每个进程对数据的请求都是一步一步完成的:
(1)将DBA转换为PCM资源名
提交此PCM资源请求的DLM(分布式锁管理器)
DLM每应用,发布活动,只有过程获得了pcmlock,继续下一步
也就是说,实例首先获得使用数据块的权利。
整个cachefusion由两服务:GCS和GES
GCS服务负责数据块之间的数据传输。
通过后台程序逻辑信息序列号完成
管理服务负责锁管理。
协调多个实例之间的数据块的访问,以确保对数据的一致访问
通过后台进程LMD完成