日志文章

2007年11月13日 09:54:12

读书心得《Cost Based Oracle Fundamentals》4章

读书心得《基于成本的Oracle优化法则》4



索引访问路径的流程:

1.     为索引列准备谓词
2.     定位索引root block
3.     沿着 branch level leaf block,寻找start key
4.     遍历leaf list,获得和谓词匹配的stop key
5.     决定是否根据rowid访问table block


索引访问的成本公式:
Cost =
  Blevel + (解释:索引高度)
  Ceiling(leaf_blocks * effective index selectivity) +(解释:叶块×索引选择率)
  Ceiling(clustering_factor * effective table selectivity) (解释:集群因素×表选择率)

有效索引选择率:
  Selectivity(P and Q) = selectivity(P) * selectivity(Q)
有效表选择率
  如果优化器觉得所有谓词都是基于索引的扫描,那么表扫描率就=索引扫描率
集群因素 CLUSTER_FACTOR
  如图:



  一个TABLECLUSTER_FACTOR越好,那么它越接近块数,反之则接近行数。我现在就知道 (clustering_factor * effective table selectivity)的含义了,因为优化器每次访问一个不同的块时,都需要一个新的I/O。重建索引可以减少leaf block,但是它对cluster factor无效。

Tags: cost  

类别: Administer |  评论(0) |  浏览(4844) |  收藏
发表评论