停止空想

老张的空中之家

存档于 六月, 2006

Histogram 在9i的缺点

作者:admin 发表时间:六月 - 5 - 2006

柱状图的作用和收集的方法我在 Block Selectivity and Row Selectivity 这篇文章里面提到过一些。

如果使用了一般的统计信息,比如

exec dbms_stats.gather_table_stats (‘user’,’tab’) ;

这时并没有对indexed columns进行数据逻辑分布的柱状图分析,可以通过user_tab_col_statistics的num_buckes列来验证,这时该列为1,也就是说没有柱状图。 如果在这个列上面值很多的话,可能也只存储最大最小值,然后根据该列上值的distinct多少来取平均。比如下面的这个例子

id value  Row selectivity (pr)  Block selectivity (pb)

01               89.87%              100%

02                2.34%                7%

03                2.16%                6%

04                1.86%                2%

05                1.42%                1%

06                1.17%                1%

07                0.75%                1%

08                0.18%                < 1%

09                0.14%                < 1%

10                0.11%                < 1%

TOTAL          100.00%              N/A

  阅读全文 »

Popularity: 25% [?]

类别:Oracle

Block Selectivity and Row Selectivity

作者:admin 发表时间:六月 - 5 - 2006

部分来自 Cary Millsap

 

Row selectivity 就是说select的行占该表中所有行的百分比

Block selectivity 就是说select的行所拥有的块占整个表块的百分比

 

我写过篇文章——Select多少百分比的数据才可以使用index?(blog上面有) 这个百分比指的是row selectivity。但是block selectivity也非常的重要。因为如果row selectivity非常小,比如100万行的表,select * from tab where x=’a’ ,只有1万行, 但是该表每个块上面都有这个行,也就是说block selectivity非常大 ,这样在select的时候就需要将全部的块都select一遍,但是根据row selectivity,就肯定使用index,

这样反而严重的影响了效率。 其实也就是说数据的物理分布相当的重要,这是我们在建立索引的时候不得不考虑的问题。

阅读全文 »

Popularity: 25% [?]

类别:Oracle

ora-01000错误

作者:admin 发表时间:六月 - 5 - 2006

昨天在中间层服务端的日志上发现了很多的  ORA-01000 错误

java.sql.SQLException: ORA-01000: maximum open cursors exceeded

 

最后查资料发现 java的服务,如果不能自动释放资源,很多都会出现该错误,所以对于java应用要适当的调大 open_cursors参数。而且这类错误基本上都是java应用才能见到。

  阅读全文 »

Popularity: 24% [?]

类别:Oracle