Oracle RAC可以说是具有较高保障级别的生产环境中最常用的部署架构,我们能根据场景让应用选择load balance还是failover的模式(可以参考
《通过JDBC让应用能体验到Oracle高可用的"红利"》)。
如果是load balance连接模式,这就牵扯到一个问题——缓存的读取方式。
首先,我们以单实例的Oracle数据库为例,用户执行一条SQL,Oracle Server通过解析、优化器等的处理,确定SQL的执行计划,读取数据的时候,会从磁盘存储的数据文件中(前提是所需数据当前不在缓存中)通过物理IO将所需数据读到Oracle的缓存中(这个缓存就称为Buffer Cache),然后再执行相应的操作。数据加载到Buffer Cache,一方面缓存是可以共享的,不同用户执行的SQL可能用到Buffer Cache中的相同数据,另一方面内存操作的效率远高于物理IO。
如果应用通过load balance的模式使用Oracle RAC,执行一条SQL,由于会涉及到多节点,有可能出现所需数据不在同一个节点的Buffer Cache缓存中,不同节点间Buffer Cache是怎么共享数据的,就成为了关键的问题。
解决问题的钥匙,就是Cache Fusion,即内存融合技术。
在此推荐一篇介绍Oracle RAC Cache Fusion的论文《Cache Fusion: Extending Shared-Disk Clusters with Shared Caches》,言简意赅地介绍了这个Cache Fusion是怎么解决Oracle RAC不同节点之间共享数据的问题。
英文原版的论文可以后台联系我,或者自行搜索。
《Cache Fusion: Extending Shared-Disk Clusters with Shared Caches》译文如下。
Abstract
Cache Fusion组件(内容融合技术)是Oracle RAC的基础组件,它实现了多个节点间的共享内容。在传统的基于shared-disk应用中,多节点间通过分布式锁和读写共享的盘来交互信息。Cache Fusion扩展了基于shared-disk架构的信息交互方式,允许不同节点间通过interconnect网络共享数据库内部的buffer。数据直接从一个节点的buffer传递到其他节点,避免了读写共享盘。Cache Fusion提高了基于shared-disk数据库的性能,同时又保留了shared-disk架构(存储计算分离)的优势。
1. Introduction
Oracle RAC名字的由来:Oracle RAC是基于shared-disk架构的分布式数据库,每个db节点可以直接访问disk,动态的扩展节点,任何应用可以不用做任何修改可以直接从传统的master/slave模式迁移到RAC模式。此外RAC通过扩展多个节点可以提高数据库服务的整体性能和可用性。只要有一个节点活着,数据库就是可用的。


近期更新的文章:
近期的热文:
文章分类和索引:
文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




