zoukankan      html  css  js  c++  java
  • dba_tables 和 dba_segments 表中 blocks 的区别

    创建测试表:

    SQL> create table t5(id int);
    表已创建。
    SQL> insert into t5 values(1);
    已创建 1 行。
    SQL> insert into t5 values(2);
    已创建 1 行。
    SQL> insert into t5 values(3);
    已创建 1 行。
    SQL> insert into t5 values(4);
    已创建 1 行。
    SQL> commit;
    提交完成。

    多插入一点数据:
    SQL> begin
      2 for i in 1 .. 1000 loop
      3 insert into T5 values(10000);
      4 commit;
      5 end loop;
      6 end;
      7 /


    分析表

    SQL> analyze table T5 compute statistics;

    表已分析。

     

    说明:

             为什么要收集统计信息,因为dba_tables 中的blocks 是只有收集统计信息以后才有值,而且对于empty_blocks 参数,还必须使用analyze 分析之后才有值。 如果使用dbms_stats.gather_table_stats收集,只能收集到blocks的值,empty_blocks 收集不到。

    有关统计信息,参考我的Blog:

                Oracle Statistic 统计信息 小结

                http://blog.csdn.net/tianlesoftware/article/details/4668723

    查看dba_segments 和 DBA_TABLES表中 blocks 值:

    SQL> select segment_name,blocks,extents,bytes,segment_type,tablespace_name from

    dba_segments where segment_name='T5';

     

    SEGME     BLOCKS    EXTENTS      BYTES SEGMENT_TYPE       TABLESPACE_NAME

    ----- ---------- ---------- ---------- ------------------ ----------------------

    T5          6528         66   53477376 TABLE              SYSTEM

     

    SQL> select blocks,empty_blocks from dba_tables where table_name = 'T5';

    BLOCKS EMPTY_BLOCKS

    ----------   ------------

    6449           78

     

    从上面的结果看以看出:

    6528 = 6449+78 +1

    即:

    Dba_Segments .blocks = Dba_Tables.Blocks+Dba_Tables.Empty_Blocks +1(segment header block)

    这个多加的1是,是segment header block. 

    如果查询的结果不是这样,可能是你没有分析表。 不妨分析表之后在查一下看看。 

     

    这两张表对blocks 的定义也不一样:

    DBA_SEGMENTS.BLOCKS holds the total number of blocks allocated to the table. 

    USER_TABLES.BLOCKS holds the total number of blocks allocated for data.

     

    喜欢请赞赏一下啦^_^

    微信赞赏

    支付宝赞赏

  • 相关阅读:
    strcpy实现 处理地址重叠,返回值问题
    lua的table的删除操作
    防御式编程
    软技能:代码之外的生存指南
    adb命令行输出logcat日志
    SyntaxError: Non-ASCII character 'xe5' in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
    cocos2dx lua 图片去色shader
    cocos studio
    35 个 Java 代码性能优化总结
    Java必备技能:clone浅克隆与深克隆
  • 原文地址:https://www.cnblogs.com/lkj371/p/15170947.html
Copyright © 2011-2022 走看看