估计索引的空间需求
从 Oracle Database 10g 开始,可以使用 DBMS_SPACE 程序包的 CREATE_INDEX_COST 过程来估计索引的空间需求。这一过程根据如下属犊来确定表的空间需求:表室间存添数、 表空间块大小、行数以及平均行长度。该过程适用于字典管理的表空间和本地管理的表空间。
对于索引空间估计,输入变量包括创建索引所执行的DDL命令以及本地计划表的名称(如 果存在一个这样的表)。索引空间的估计依赖于相关表的统计信息。在开始空间估计过程之前, 应该确保这些统计信息是正确的,否则结果就会被曲解。
下面的列表描述了 CREATE_INDEX_COST过程的参数:
参数 描述
ddl create index 命令
used_bytes 索引数据己经使用的字节数
alloc_bytes 分配给索引盘区的字节数
plan_table 使用的计划表(默认为NULL)
因为CREATE_INDEX_COST过程根据表的统计信息获得其结果,所以只有在创建、加载 和分析表后才可以屈用该过程。下面的示例估计BOOKSHELF表上的新索引所需的空间。表空间的名称是create index命令的一部分,该命令作为ddl变量值的一部分被传递给 CREATE_INDEX_COST 过程。
set serveroutput on
declare
calc_used_bytes NUMBER;
calc_alloc_bytes NUMBER;
begin
DBMS_SPACE.CREATE_INDEX_COST(
ddl => 'create index EMP_FN on EMPLOYEES '|| '(FIRST_NAME) tablespace USERS',
used_bytes => calc_used_bytes,
alloc_bytes => calc_alloc_bytes
);
DBMS_OUTPUT.PUT_LINE('Used bytes = '||calc_used_bytes);
DBMS_OUTPUT.PUT_LINE('Allocated bytes = '||calc_alloc_bytes);
end;
/
该脚本的输出将为指定的雇员名索引显示己经使用的和分配的字节值。
Used bytes = 749
Allocated bytes = 65536
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




