oracle估算大小,Oracle 估算數據庫大小的方法
一.說明
一網友問我將一個查詢的結果集存放到臨時表里,如果估算臨時表的大小,當時想的方法是通過統計block來計算。后來想,此方法的操作性也不是很高。 最好是能在查詢操作執行之前就能估算出大小。
查看了一下ALL_TABLES 表,其中有個字段:avg_row_len. 該值單位為bytes。 可以一句這個字段來進行一個估算。
AVG_ROW_LEN*
NUMBER
Average length of a row in the table (in bytes)
根據對表大小的估算,進而可以估算出整個數據庫的大小。 在項目測試階段,可以根據所有對象進行估算,從而可以估算出系統上線以后數據庫的大小,根據這些數據可以規劃存儲。這里要注意一點,要給備份留足存儲空間。 一般備份需要的空間是DB的2-3倍。 如果DB 是100G,那么給備份的空間最好是200G以上。
根據dba_segments視圖可以查看數據庫中占用存儲空間的對象:
SYS@anqing2(rac2)> select distinctsegment_type from dba_segments;
SEGMENT_TYPE
------------------
LOBINDEX
INDEX PARTITION
TABLE PARTITION
NESTED TABLE
ROLLBACK
LOB PARTITION
LOBSEGMENT
INDEX
TABLE
CLUSTER
TYPE2 UNDO
11 rows selected.
這里主要就是表和索引。把所有表和索引的大小估算出來,在相加就可以估算出DB的大小了。
二. 估算表的大小
表的大小=記錄數*平均字段大小(avg_row_len)
Avg_row_len 可以通過如下SQL 查詢。 其單位為bytes。
SYS@anqing2(rac2)> selecttable_name,avg_row_len from all_tables where table_name='T1';
TABLE_NAME???????????????????? AVG_ROW_LEN
------------------------------ -----------
T1????????????????????????????????????? 93
如果T1 表未來估計為1000萬行,那么其大小就是1000w*93bytes。
三.估算表上索引的大小
All_indexes 視圖沒有all_tables 上的avg_row_len 字段,不過我們可以通過視圖和表大小的一個比率進行估算。 表的大小我們可以估算出來,索引的大小可以通過這個比率進行估算。
SQL>create index idx_t1_created on t1(created)
SQL>exec dbms_stats.gather_table_stats('SYS','T1',cascade=>TRUE)
SYS@anqing2(rac2)> selectsegment_name,segment_type,bytes,blocks from dba_segments where segment_namein? ('T1','IDX_T1_CREATED');
SEGMENT_NAME??? SEGMENT_TYPE??????????? BYTES???? BLOCKS
--------------- ---------------------------- ----------
T1????????????? TABLE???????????????? 6291456??????? 768
IDX_T1_CREATED? INDEX???????????????? 2097152??????? 256
計算索引和表的比率:
SYS@anqing2(rac2)> select (2097152/6291456)*100,(256/768)*100 from dual;
(2097152/6291456)*100 (256/768)*100
--------------------- -------------
33.3333333??? 33.3333333
從bytes 和 blocks 的比率是一樣,即索引是表的33%。?那么如果估算表以后的大小是1000M,那么對應的索引大小就是1000M*33%=330M。
把所有表和索引的大小加起來,就是整個數據庫大小的估算值。
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
Weibo: http://weibo.com/tianlesoftware
Email: dvd.dba@gmail.com
DBA1 群:62697716(滿);?? DBA2 群:62697977(滿)??DBA3 群:62697850(滿)
DBA 超級群:63306533(滿);? DBA4 群:83829929(滿) DBA5群: 142216823(滿)
DBA6 群:158654907(滿)?? DBA7 群:69087192(滿)??DBA8 群:172855474
DBA 超級群2:151508914? DBA9群:102954821???? 聊天 群:40132017(滿)
--加群需要在備注說明Oracle表空間和數據文件的關系,否則拒絕申請
總結
以上是生活随笔為你收集整理的oracle估算大小,Oracle 估算數據庫大小的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查看电脑内存条型号
- 下一篇: window ssm总线控制器有感叹号怎