登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

有意思的RAC优化讨论   

2009-06-23 20:14:38|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
有意思的RAC优化讨论
RAC优化
“因OLTP主要利用的技术是使不同的会话分担在不同的节点,通过优化,要使RAC节点之间的通讯最少,越少越好,这样在节点之间发生冲突的可能性就降低了。
我们可以把不同城市的订单放在不同的节点上去,这时候访问不要去用动态的负载均衡,用了负载均衡之后,不知道负载到哪个节点去了,可能CPU是闲了,
但是要等另一节点传数据块。如果会话之间老是访问同一个数据块,有些热点块的话,要把数据块分散开,尽量要把相关联的会话放到同一个节点上去。”

问题: 这样的话,是不是只要使用统一的RAC服务名(类似于devdb,而不是实例名devdb1,devdb2),然后关闭负载均衡. 这样就可以做到相关联的会话被放至
同一个节点上去。请问是不是这样?
如果不是的话,应该怎么样做才能保证即能做到自动failover,又能做到把相关联的会话放至同一个节点.

lfree:
对应用分割,比如财务在节点一,其它在节点2.
减少内网的流量,
同时像单机一样要优化好sql,减少逻辑读.
rollingpig:
最主要是tns的设置。
address_list李写多个IP, 然后
load_balance=off

QUOTE:
原帖由 gy1982329 于 2008-10-24 16:42 发表
同样认为,rac的均衡负载你不用,还选rac做什么!

Kamus :
RAC的均衡负载只是其中的一个功能,如果你自信自己的应用SQL优化的足够好,机器足够强劲,能够cover住interconnect中的数据传输和gc锁的性能消耗,
那么当然你可以简单的选择负载均衡。

这里讨论的思路是:
如果你想要自己的RAC跑的更好,那么需要应用上予以配合,就是将不同的应用有策略有计划的分布到不同的节点上。至少我们可以简单地选择将查询业务和
更新业务分布到不同的节点上。
此时,为什么要选择RAC?
1. 数据共享。像棉花糖说的那种分成多个数据库,那这多个数据库之间的数据同步是不是要考虑?是不是要自己去实施?
2. 高可用。
当一个节点down掉,通过TAF或者failover的配置,可以将原来的查询业务或者更新业务转到还存活的节点上去运行,虽然性能可能下降,但是至少业务还是可能正常运行的。这种failover的时间远小于分成单独数据库的环境中的failover时间。
数据库版本升级,单实例数据库 的升级怎么都需要down机时间吧,但是对于RAC环境我们可以选择rollingup的升级方式,down机时间几乎可以忽略。

lxz3000:
我的初步写法,ha是两个节点都有的服务,另外注意addresslist的前后顺序,一般情况下,这两个ip只有前一个起效,
如果你在你的客户端的hosts中加上
192.168.0.1(你的ip1) racdb1(节点计算机名)
192.168.0.2 racdb2
你会发现神奇的效果,就是即使你的addresslist乱排序,或者甚至第一个连接不要racdb1,只提供racdb2,oracle
客户端都可以根据service_name&instance_name去找到racdb1这个主机。

TAF51 =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1)(PORT = 1526))
  (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2)(PORT = 1526))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = ha)
  (INSTANCE_NAME = db1)
  (FAILOVER_MODE =
  (BACKUP = TAF52)
  (TYPE = select)
  (METHOD = basic)
  (RETRIES=30)
  (DELAY=10)
  )
  )
  )

TAF52 =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = racdb2)(PORT = 1526))
  (ADDRESS = (PROTOCOL = TCP)(HOST = racdb1)(PORT = 1526))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = ha)
  (INSTANCE_NAME = db2)
  (FAILOVER_MODE =
  (BACKUP = TAF51)
  (TYPE = select)
  (METHOD = basic)
  (RETRIES=30)
  (DELAY=10)
  )
  )
  )
以上是我刚引入的,并且上个周已经发挥作用了,以前产线停30分钟,这次10秒就自动切换了,不用人为干预。

回复 #22 wxy0327 的帖子
差不多!关键是instance_name/service_name指定的内容!
我是根据文档中讲的作的,并且前两周2号节点早上4点down了,产线只是感觉到10秒左右的停顿,
以前可是人去切换的,好多点,要花几十分钟。

参考网页:
http://www.itpub.net/viewthread.php?tid=1002673&extra=&page=3
http://blog.csdn.net/wzy0623/archive/2008/10/24/3137235.aspx

  评论这张
 
阅读(493)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018