eygle.com   eygle.com
eygle.com  
 
eygle.com - 留言簿 - 回复留言 - Powered by eYgLe.Com
返回留言簿
回 复 留 言
留言ID:
留言原文:
To: 盖老师
  盖老师
昨天我问了你这个问题

在Oracle 8i之前,_db_block_hash_latches的数量和Bucket的数量是一致的,每个Latch管理一个Bucket;从Oracle8i开始每个latch需要管理多个Bucket,由于每个Bucket上的
Buffer数量大大降低,所以Latch的性能反而得到了提高

请问这个结论“由于每个Bucket上的
Buffer数量大大降低,所以Latch的性能反而得到了提高

我感觉实在不能明显的“由于”然后“所以”出来啊
过去是一个Bucket对应一个latch,假设一个Bucket下挂100个BH
那么就是一个latch控制100个BH
假设现在是2个Bucket对应1个latch,一个Bucket下挂50个BH
那么依然是 一个latch控制100个BH(2*50)
所以性能并没有提升啊

  To: etl2007
  你这种假设的状况可能永远不会出现,所以还是性能提升了。
原来的Bucket数量是buffers/4,现在是buffers*2,你很难见到Hash碰撞了。
 
对于您的答复,我还是不很理解,我依然有下面的疑问
例如过去一个 Bucket 下挂100个BH,假设 对应的是1到100这100个data block
 同时因为一个Latch控制一个1个Bucket,
 那么我们可以认为一个Latch控制1到100这100个数字
但是到了现在,假设现在是2个Bucket对应1个latch,一个Bucket下挂50个BH
那么依然是 一个latch控制100个BH(2*50)
我理解的“hash算法的不同”导致的结果只能是这样
过去这个latch是控制1到100这100个data block,现在因为算法不同
顶多变成了控制 1到50,450到500这5个数据块(或者更加分散,例如1到30,350到400,631到700;诸如此类情况),但是注意,此时一个latch控制的数目并没有变,只是控制数据块的内容变了。
但这从算法的角度,查询的复杂度依然是一致的。既然如此,那么又何来性能的提升呢?
From: etl2007
2010.06.30 23:41
管理密码: 请输入管理密码, 否则无法回复.
斑竹昵称:
信息图标: ( 随机 )


BB 代码:
内容:

如果想删除回复, 请点击最下面的删除回复按钮.
删 除 回 复
管理密码: 请输入管理密码, 只有版主才能删除回复.
Copyright © 2003~2012 eygle.com All Rights Reserved.
Powered by: www.eygle.com