Oracle 估算数据库大小的方法
来源:互联网 发布:java代码格式化工具 编辑:程序博客网 时间:2024/06/09 16:49
一网友问我将一个查询的结果集存放到临时表里,如果估算临时表的大小,当时想的方法是通过统计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 估算数据库大小的方法
- Oracle 估算数据库大小的方法
- Oracle 估算数据库大小的方法
- Oracle 估算数据库大小的方法
- Oracle估算表大小的小方法
- Oracle估算表大小的小方法
- 如何估算Oracle数据库所需的UNDO表空间的大小
- oracle数据库空间估算
- oracle数据库空间估算
- 线程池最优大小的估算方法实践
- Oracle undo表空间大小估算
- 如何估算PGA,SGA的大小,配置数据库服务器的内存
- 如何估算PGA,SGA的大小,配置数据库服务器的内存
- 如何估算PGA,SGA的大小,配置数据库服务器的内存
- 如何估算PGA,SGA的大小,配置数据库服务器的内存
- 如何估算PGA,SGA的大小,配置数据库服务器的内存
- 如何估算PGA,SGA的大小,配置数据库服务器的内存
- oracle undo 表空间 ——估算UNDO表空间的大小
- 常用正则表达式收录【待续】
- 用jquery获取提交了的表单的单选按钮的值呢?
- windows nt 5.0 kernel architecture
- 文件系统与块设备
- 哈工大操作系统实验 6 字符显示的控制
- Oracle 估算数据库大小的方法
- C++中建立对象间消息连接的系统方法
- 月日年中 日的动态添加
- 谜题1.1 基本算术操作符
- java插入排序
- asp.net高级应用之站点导航SiteMapPath控件
- 我曾经得到的一个最好的编程建议
- ant filter fileset
- com技术内幕--读书笔记(4)