日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle 估算数据库大小的方法

發布時間:2024/8/26 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。?

把所有表和索引的大小加起來,就是整個數據庫大小的估算值。


總結

以上是生活随笔為你收集整理的Oracle 估算数据库大小的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。