oracle IOT表學習

regonly1發表於2010-03-18

IOT: Index-Organized Table
索引組織表
含義即將表結構整體放入索引中,且是按照主鍵進行排序的。
建立:
create table emp_iot(
    emp_no int,
    emp_name varchar2(100),
    dept_no int,
    salary number(10,2),
    constraint pk_empi primary key(emp_no, emp_name, dept_no))
organization index
[pctthreshold n/including colname] overflow tablespace fund_index;

引數:
pctthreshold: 溢位閥值。指定當塊中的使用空間達到該值時,將溢位的資料存放到另外的段上。由引數overflow指定。
including:指定在哪個欄位以後的欄位放入溢位段。由引數overflow指定溢位的表空間。

分析該表的壓縮度:
analyze table emp_iot validate structure cascade;
or
analyze index pk_empi validate structure;

檢視分析結果

--將表改為非壓縮模式:
SQL> alter table iot move nocompress;
 
Table altered
--分析索引
SQL> analyze index pk_iot validate structure;
 
Index analyzed
 
檢視分析結果:
SQL> select ie.name, ie.used_space, ie.used_space*(1-ie.opt_cmpr_pctsave/100) after_compress,
  2         ie.pct_used, ie.opt_cmpr_count, ie.opt_cmpr_pctsave
  3    from index_stats ie
  4  /
 
NAME                           USED_SPACE AFTER_COMPRESS   PCT_USED OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
------------------------------ ---------- -------------- ---------- -------------- ----------------
PK_IOT                            2672239      1870567.3         90              2               30
 
 欄位used_space標識該索引使用了多少空間。
opt_cmpr_count是一個壓縮建議值,表明壓縮度為2時,可以節約30%的空間。
也就是壓縮後空間可減少到:used_space*(1-30%),即:1870567.3
現在將壓縮度改至2,看結果如何:
SQL> alter table iot move compress 2;
 
Table altered

--分析索引
SQL> analyze index pk_iot validate structure;
 
Index analyzed
 
--檢視壓縮結果:
SQL> select ie.name, ie.used_space, ie.used_space*(1-ie.opt_cmpr_pctsave/100) after_compress,
  2         ie.pct_used, ie.opt_cmpr_count, ie.opt_cmpr_pctsave
  3    from index_stats ie
  4  /
 
NAME                           USED_SPACE AFTER_COMPRESS   PCT_USED OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
------------------------------ ---------- -------------- ---------- -------------- ----------------
PK_IOT                            1858487        1858487         89              2                0

可以看到現在已經壓縮到1858487,與之前計算的1870567.3的估計值很接近。
壓縮IOT不僅可以節省空間,還可以加快SQL語句的執行速度。
缺點就是在建立或壓縮的時候需要佔用比不壓縮更多的CPU和時間。
但是從長遠來看,這種消耗實際上是值得的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-629852/,如需轉載,請註明出處,否則將追究法律責任。

相關文章