ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用Analyze语句与Dbms_stats包的区别

使用Analyze语句与Dbms_stats包的区别

原创 Linux操作系统 作者:bin_huhj 时间:2019-04-16 17:00:07 0 删除 编辑

我们知道从oracle8i开始﹐analyze语句和dbms_stats包都可以收集相关对象(Tables﹑Indexes﹑Clusters and Materialized Views)的statistics。那哪些statistics的收集应该使用analyze语句﹐哪些statistics的收集应该使用dbms_stats包呢﹖


对于使用哪个去收集statistics﹐应该把一个原则﹐凡是与cost-based optimizer相关的statistics﹐都应通过dbms_stats包收集。与cost-based optimizer无关的statistics(如empty blocks﹐average space等)都应通过analyze语句去收集。

之所以要用dbms_stats包去替代analyze收集优化器statistics﹐是因为dbms_stats包能收集并行statistics和分区对象的全局statistics。

当然analyze语句在其它方面的statistics收集﹐是dbms_stats所无法取代的﹐如﹕

1. 收集在freelist上的blocks信息

2. 检验存储格式的合法性

analyze table bk_test_t validate structure cascade online;

3. 识别表或cluster的行迁移与行链接

为了能使用analyze….list chained rows语句识别行迁移与行链接﹐必须先在执行analyze语句所在的schema内执行$ORACLE_HOME/rdbms/admin/utlchain.sql(或utlchn1.sql)脚本建立chained_rows表。在chained_rows建立之后﹐就可以执行下面的语句﹕

analyze table bk_test list chained rows into chained_rows;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/33600/viewspace-266418/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2003-01-03

  • 博文量
    28
  • 访问量
    26259