dba_tables.blocks、dba_tables.empty_blocks和dba_segments.blocks之間是什麼關係

maohaiqing0304發表於2013-04-30

今天朋友問我

dba_tables.blocks、dba_tables.empty_blocks和dba_segments.blocks之間是什麼關係

我的感覺:

dba_segments.blocks 我常常用來查詢高水位大小 (表真正使用的大小+碎片大小'使用後釋放大小')

具體的dba_tables不是常用,因為他還要手動的去分析下, (直接用分析表透過查詢就好)

http://www.itpub.net/thread-604366-1-1.html 

2樓人講的我覺得挺對的:

dba_tables.BLOCKS  Number of used data blocks in the table
dba_tables.EMPTY_BLOCKS  Number of empty (never used) data blocks in the table
dba_segments.blocks Size, in Oracle blocks, of the segment
∴dba_segments.blocks =dba_tables.BLOCKS +dba_tables.EMPTY_BLOCKS

在此也做了實驗去證明:

我實踐的結果很正常就是dba_segments.blocks =dba_tables.BLOCKS +dba_tables.EMPTY_BLOCKS

實踐過程:
create table t1 as select * from user_objects;
檢視user_tables.blocks和empty_blocks
SQL> SELECT a.TABLE_NAME,
  2         a.INITIAL_EXTENT,
  3         a.MIN_EXTENTS,
  4         a.BLOCKS,
  5         a.EMPTY_BLOCKS
  6    FROM USER_TABLES A
  7   WHERE A.TABLE_NAME = 'T1';
TABLE_NAME                     INITIAL_EXTENT MIN_EXTENTS     BLOCKS EMPTY_BLOCKS
------------------------------ -------------- ----------- ---------- ------------
T1                                      65536           1                       ---&gt沒有進行收集∴users_tables才不會顯示    就例如user_tables.num_rows和真是的行數不一是一個意思
SQL>

檢視user_segments.blocks
SQL> SELECT a.segment_name,
  2         a.BLOCKS
  3         FROM user_segments A
  4   WHERE A.segment_name = 'T1'
  5  ;
SEGMENT_NAME                                                                          BLOCKS
--------------------------------------------------------------------------------- ----------
T1                                                                                         8

分析下表
SQL>  analyze table t1 compute statistics;
Table analyzed.
SQL> SELECT a.TABLE_NAME,
  2         a.INITIAL_EXTENT,
  3         a.MIN_EXTENTS,
  4         a.BLOCKS,
  5         a.EMPTY_BLOCKS
  6    FROM USER_TABLES A
  7   WHERE A.TABLE_NAME = 'T1';
TABLE_NAME                     INITIAL_EXTENT MIN_EXTENTS     BLOCKS EMPTY_BLOCKS
------------------------------ -------------- ----------- ---------- ------------
T1                                      65536           1          4            4

SQL> SELECT a.segment_name,
  2         a.BLOCKS
  3         FROM user_segments A
  4   WHERE A.segment_name = 'T1'
  5  ;
SEGMENT_NAME                                                                          BLOCKS
--------------------------------------------------------------------------------- ----------
T1                                                                                         8

發現dba_segments.blocks =dba_tables.BLOCKS +dba_tables.EMPTY_BLOCKS
SQL> insert into t1 select * from t1;
90 rows created.
SQL> insert into t1 select * from t1;
180 rows created.
SQL> insert into t1 select * from t1;
360 rows created.
SQL> insert into t1 select * from t1;
720 rows created.
SQL> commit;
Commit complete.
SQL> SELECT a.TABLE_NAME,
  2         a.INITIAL_EXTENT,
  3         a.MIN_EXTENTS,
  4         a.BLOCKS,
  5         a.EMPTY_BLOCKS
  6    FROM USER_TABLES A
  7   WHERE A.TABLE_NAME = 'T1';
TABLE_NAME                     INITIAL_EXTENT MIN_EXTENTS     BLOCKS EMPTY_BLOCKS
------------------------------ -------------- ----------- ---------- ------------
T1                                      65536           1          8            0
SQL>  analyze table t1 compute statistics;
Table analyzed.
SQL> SELECT a.TABLE_NAME,
  2         a.INITIAL_EXTENT,
  3         a.MIN_EXTENTS,
  4         a.BLOCKS,
  5         a.EMPTY_BLOCKS
  6    FROM USER_TABLES A
  7   WHERE A.TABLE_NAME = 'T1';
TABLE_NAME                     INITIAL_EXTENT MIN_EXTENTS     BLOCKS EMPTY_BLOCKS
------------------------------ -------------- ----------- ---------- ------------
T1                                      65536           1         23            1
SQL> SELECT a.segment_name,
  2         a.BLOCKS
  3         FROM user_segments A
  4   WHERE A.segment_name = 'T1'
  5  ;
SEGMENT_NAME                                                                          BLOCKS
--------------------------------------------------------------------------------- ----------
T1                                                                                        24
SQL>  24=23+1  
您懂了麼
如果理解的有問題 請及時告知  都學習和改進下  謝謝

(   建議都看官網的資料   )英語不好才要看奧 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28602568/viewspace-759540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章