[Oracle] RAC 之 - 负载均衡深入解析

 更新时间:2013年07月12日 11:32:02   作者:  
负载均衡是指把负载平均分配到集群中的各个节点,从而提高整体性能。Oracle RAC提供两种方式实现负载均衡,以下就为大家详细介绍一下,需要的朋友可以参考下

Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个service过来的连接请求都由某个节点处理。下面来具体看看这两种手段:

纯技术手段 (面向连接的负载均衡)

1. 客户端负载均衡
配置方法是在客户端tnsnames.ora文件中设置LOAD_BALANCE=YES,当客户端发起连接时,会从地址列表中随机选取一个,把连接请求随机分散给各个实例。
这个技术的最大缺点在于不能根据各个实例的真实负载情况来分散请求,太过粗糙,因此很少使用。

2. 服务器端负载均衡
服务器端负载均衡依赖于Listener收集的负载信息,在数据库运行过程中,pmon进程会收集系统的负载信息,定期更新至Listener中。如果你配置了Remote_listener参数,pmon进程不但能把负载信息注册到本地Listener,也可以注册到其它实例的Listener。这样有了pmon自动注册机制后,集群的每个节点的Listener都掌握了所有节点的负载信息,当收到客户端请求时,会把连接分配给负载最小的实例。

面向业务手段 (利用Service负载均衡)
上面介绍了纯技术手段进行的负载均衡,看起来很美好,但在实际使用中,可能会带来非常大的性能问题。大家都知道,RAC由于其share-disk的架构,它的性能很大程度上依赖于内存融合(Cache Fusion),纯技术手段无法知道业务的具体情况,因此它可能把同一个业务的连接分散到各个实例中,导致大量的内存融合,性能急剧下降。

如果我们换一种思路,把同一种应用程序的连接分到同一个实例上,比如A应用程序的连接都连在A实例,B应用程序的连接都连在B实例上,这样就能够有效地减少内存融合。
对应用的划分可以通过service实现,这需要DBA和开放人员合作,在了解业务特点的情况下配置service

相关文章

  • 解决maven不能下载oracle jdbc驱动的问题

    解决maven不能下载oracle jdbc驱动的问题

    这篇文章主要介绍了解决maven不能下载oracle jdbc驱动的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 11g Oracle导出表不导出数据默认为空表的解决方法

    11g Oracle导出表不导出数据默认为空表的解决方法

    11g Oracle导出表 默认不导出数据为空的表解决
    2014-07-07
  • oracle 声明游标(不具备字段)规则应用

    oracle 声明游标(不具备字段)规则应用

    在开发过程中可能会声明一个含有某张表不具备字段的游标,来解决特殊问题,本文将详细介绍这类问题,需要了解更多的朋友可以参考下
    2012-11-11
  • Oracle数据库如何创建第一张表

    Oracle数据库如何创建第一张表

    这篇文章主要介绍了Oracle数据库如何创建第一张表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • rman配置及rman常用命令操作

    rman配置及rman常用命令操作

    这篇文章主要介绍了rman配置及rman常用命令操作,包括校验备份信息、查看备份、删除备份等,需要的朋友可以参考下
    2014-03-03
  • Win7彻底卸载Oracle 11g图文步骤(靠谱)

    Win7彻底卸载Oracle 11g图文步骤(靠谱)

    网上资料结合自己的操作整理出的一套靠谱的彻底卸载Oracle 11g的图文步骤,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-03-03
  • Oracle CDB管理实现多租户管理功能

    Oracle CDB管理实现多租户管理功能

    这篇文章主要介绍了Oracle CDB管理实现多租户管理功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用oracle具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2022-12-12
  • Oracle 的入门心得 强烈推荐

    Oracle 的入门心得 强烈推荐

    oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。
    2009-05-05
  • Oracle通过递归查询父子兄弟节点方法示例

    Oracle通过递归查询父子兄弟节点方法示例

    这篇文章主要给大家介绍了关于Oracle如何通过递归查询父子兄弟节点的相关资料,递归查询对各位程序员来说应该都不陌生,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-01-01
  • Oracle中TIMESTAMP的几种类型介绍与实例

    Oracle中TIMESTAMP的几种类型介绍与实例

    我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_seconds_precision),可以是 0 to 9,缺省是6。这篇文章主要介绍了Oralce中TIMESTAMP的几种类型。有需要的朋友们可以参考借鉴。
    2016-12-12

最新评论