oracle 估算一個索引所需要的空間
在建立一個索引之前,可以透過DBMS_SPACE.CREATE_INDEX_COST儲存過程來估算所需的空間,但僅僅是估算。
This procedure determines the cost of creating an index on an existing table. The input is the DDL statement that will be used to create the index. The procedure will output the storage required to create the index.
This procedure determines the cost of creating an index on an existing table. The input is the DDL statement that will be used to create the index. The procedure will output the storage required to create the index.
DBMS_SPACE.CREATE_INDEX_COST ( ddl IN VARCHAR2, used_bytes OUT NUMBER, alloc_bytes OUT NUMBER, plan_table IN VARCHAR2 DEFAULT NULL);
Parameter | Description |
---|---|
ddl |
The create index DDL statement |
used_bytes |
The number of bytes representing the actual index data 索引資料需要的空間 |
alloc_bytes |
Size of the index when created in the tablespace 索引在表空間中將分配多少空間 |
plan_table |
Which plan table to use, default NULL |
-
SQL> exec dbms_stats.gather_table_stats('HR','T1');
-
-
PL/SQL procedure successfully completed.
-
-
SQL> select sum(bytes)/1024/1024 from dba_segments where segment_name='T1' and owner='HR';
-
-
SUM(BYTES)/1024/1024
-
--------------------
-
72
-
-
SQL> select a.tablespace_name,total,free,total-free used from
-
2 ( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
-
3 group by tablespace_name) a,
-
4 ( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
-
5 group by tablespace_name) b
-
6 where a.tablespace_name=b.tablespace_name and a.tablespace_name='USERS';
-
-
TABLESPACE_NAME TOTAL FREE USED
-
------------------------------ ---------- ---------- ----------
- USERS 483.75 380.0625 103.6875
-
SQL> declare
-
2 v1 number;
-
3 v2 number;
-
4 begin
-
5 DBMS_SPACE.CREATE_INDEX_COST('create index hr.idx_t1_jobid on hr.t1(job_id)',v1,v2);
-
6 dbms_output.put_line('create the index need actually use: '||v1/1024/1024||' MB ,and allocalte: '||v2/1024/1024||' MB in the tablespace!');
-
7 end;
-
8 /
-
create the index need actually use: 5.9375 MB ,and allocalte: 18 MB in the
-
tablespace!
-
- PL/SQL procedure successfully completed.
-
SQL> create index hr.idx_t1_jobid on hr.t1(job_id);
-
-
Index created.
-
-
SQL> select sum(bytes)/1024/1024 from dba_segments where segment_name='IDX_T1_JOBID';
-
-
SUM(BYTES)/1024/1024
-
--------------------
-
17
-
-
SQL> select a.tablespace_name,total,free,total-free used from
-
2 ( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
-
3 group by tablespace_name) a,
-
4 ( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
-
5 group by tablespace_name) b
-
6 where a.tablespace_name=b.tablespace_name and a.tablespace_name='USERS';
-
-
TABLESPACE_NAME TOTAL FREE USED
-
------------------------------ ---------- ---------- ----------
- USERS 483.75 363.0625 120.6875
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-1846376/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入淺出空間索引:為什麼需要空間索引索引
- Oracle中表空間、表、索引的遷移Oracle索引
- 檢視ORACLE的表所佔空間大小Oracle
- oracle如何估算即將建立的索引大小Oracle索引
- 【oracle 】如何估算即將建立的索引大小Oracle索引
- oracle資料庫中索引空間的重用Oracle資料庫索引
- oracle 檢視錶所佔用的空間大小Oracle
- 怎麼估算一段時間裡,幾條SQL所佔用的時間SQL
- Oracle表、索引修改表空間語句Oracle索引
- 空間索引 - 各資料庫空間索引使用報告索引資料庫
- 索引表空間不足的幾個處理思路索引
- MySQL索引之空間索引(SPATIAL)MySql索引
- 關於索引空間的重用的幾個場景索引
- oracle UNDO表空間一個bug——undo表空間快速擴充套件Oracle套件
- oracle的表空間、分割槽表、以及索引的總結Oracle索引
- 將表從一個表空間遷移到另外一個表空間
- oracle spatial之基礎知識之四空間索引Oracle索引
- 關於oracle的表空間,分割槽表,以及索引的總結Oracle索引
- Oracle imp 匯入資料到另一個表空間Oracle
- Oracle 找出需要建立索引的表Oracle索引
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- oracle中用sql計算一個表佔用的空間的大小OracleSQL
- 移動 oracle object 到新的表空間(表,索引,分割槽,LOB)OracleObject索引
- 深入淺出空間索引:2索引
- 關於oracle的表空間,分割槽表,以及索引的總結(轉)Oracle索引
- 關於oracle的表空間,分割槽表,以及索引的總結 -- 轉Oracle索引
- 【財富空間】所謂事業,是將一個人最小的那個核心最大化
- IMPDP 多個表空間物件匯入到一個表空間中物件
- oracle查詢表空間的空間佔用情況Oracle
- oracle表空間的整理Oracle
- Oracle 表空間的管理Oracle
- Oracle 表空間 的操作Oracle
- ORACLE的SYSAUX 表空間OracleUX
- ORACLE的SYSTEM 表空間Oracle
- Oracle的表空間管理Oracle
- Oracle 查詢各個 “表空間/資料檔案” 的空間使用比情況Oracle
- Oracle11gr2不可用索引不佔用空間Oracle索引
- Oracle表空間Oracle