Oracle 估算資料庫大小的方法
一.說明
一網友問我將一個查詢的結果集存放到臨時表裡,如果估算臨時表的大小,當時想的方法是通過統計block來計算。後來想,此方法的操作性也不是很高。 最好是能在查詢操作執行之前就能估算出大小。
檢視了一下ALL_TABLES 表,其中有個欄位:avg_row_len. 該值單位為bytes。 可以一句這個欄位來進行一個估算。
AVG_ROW_LEN* | NUMBER |
| Average length of a row in the table (in bytes) |
http://download.oracle.com/docs/cd/E11882_01/server.112/e17110/statviews_2117.htm#i1592091
根據對錶大小的估算,進而可以估算出整個資料庫的大小。 在專案測試階段,可以根據所有物件進行估算,從而可以估算出系統上線以後資料庫的大小,根據這些資料可以規劃儲存。這裡要注意一點,要給備份留足儲存空間。 一般備份需要的空間是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。
把所有表和索引的大小加起來,就是整個資料庫大小的估算值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15880878/viewspace-720020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何估算Oracle資料庫每日資料增長量Oracle資料庫
- 修改Oracle資料庫表的大小Oracle資料庫
- oracle如何估算即將建立的索引大小Oracle索引
- 【oracle 】如何估算即將建立的索引大小Oracle索引
- 檢視MySQL資料庫大小的方法總結MySql資料庫
- 檢視oracle資料庫真實大小Oracle資料庫
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- clone oracle資料庫的方法Oracle資料庫
- 查詢資料庫的資料量的大小資料庫
- 監控Oracle資料庫方法Oracle資料庫
- 查詢資料庫大小資料庫
- Oracle資料檔案大小的限制Oracle
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- 資料檔案大小和資料庫的關係資料庫
- 檢視資料庫資料檔案的總大小資料庫
- oracle資料庫插入行更快方法Oracle資料庫
- Oracle資料庫打補丁方法Oracle資料庫
- 新建Oracle資料庫三種方法Oracle資料庫
- 統計資料庫中表大小資料庫
- oracle資料檔案大小限制Oracle
- Oracle資料匯入到Hive資料庫的操作方法OracleHive資料庫
- 【BUILD_ORACLE】在Oracle cloud資料庫“插拔”PDB的方法UIOracleCloud資料庫
- 查詢MySQL資料庫,MySQL表的大小MySql資料庫
- 檢視資料庫大小的通用命令:資料庫
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- ORACLE資料庫降低高水位線方法Oracle資料庫
- 跳過Oracle資料庫壞塊方法Oracle資料庫
- oracle資料庫停止方法及過程Oracle資料庫
- 非常實用的Oracle資料庫資料恢復方法案例Oracle資料庫資料恢復
- Oracle資料庫升級或資料遷移的方法探討Oracle資料庫
- SQLServer查詢所有資料庫大小SQLServer資料庫
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- oracle資料庫CPU特別高的解決方法Oracle資料庫
- Java連線oracle資料庫的兩種常用方法JavaOracle資料庫
- Oracle資料庫Decode()函式的使用方法Oracle資料庫函式
- MSSQL資料庫映象在Oracle中的實現方法SQL資料庫Oracle
- Oracle資料庫中分割槽表的操作方法Oracle資料庫
- Oracle 資料庫優化的R方法(Method R)(zt)Oracle資料庫優化