iot 堆表 與普通表

2021-08-25 07:37:18 字數 2966 閱讀 5611

普通表與堆表測試對比

drop table heap;

create table heap

(a varchar2(30),

b varchar2(30),

c varchar2(30),

constraint heap_pk primary key (a, b )

);drop table iot;

create table iot

(a varchar2(30),

b varchar2(30),

c varchar2(30),

constraint iot_pk primary key (a, b )

)organization index;

create or replace procedure insert_heap

isbegin

for i in 1 .. 100 loop

for j in 1 .. 1000 loop

insert into heap values ( 'a'||i, 'a'||i||j, 'cccc' );

end loop;

end loop;

commit;

end;

/show errors;

create or replace procedure insert_iot

isbegin

for i in 1 .. 100 loop

for j in 1 .. 1000 loop

insert into iot values ( 'a'||i, 'a'||i||j, 'cccc' );

end loop;

end loop;

commit;

end;

/create or replace procedure select_heap

isl_a heap.a%type;

begin

for i in 1 .. 100 loop

l_a := 'a'||i;

for x in (select * from heap where a=l_a) loop

null;

end loop;

end loop;

end;

/create or replace procedure select_iot

isl_a iot.a%type;

begin

for i in 1 .. 100 loop

l_a := 'a'||i;

for x in (select * from iot where a=l_a) loop

null;

end loop;

end loop;

end;

/show errors;

begin

dbms_stats.gather_table_stats(

ownname => 'fuyou',

tabname => 'heap' );

dbms_stats.gather_table_stats(

ownname => 'fuyou',

tabname => 'iot' );

end;

/begin

insert_heap;

insert_iot;

end;

/

利於tom的runstats指令碼測試:

exec runstats_pkg.rs_start

exec select_heap

exec runstats_pkg.rs_middle

exec select_iot

exec runstats_pkg.rs_stop( 50 )

結果 :

fuyou@orcl> exec runstats_pkg.rs_start;

pl/sql 過程已成功完成。

fuyou@orcl> exec select_heap

pl/sql 過程已成功完成。

fuyou@orcl> exec runstats_pkg.rs_middle

pl/sql 過程已成功完成。

fuyou@orcl> exec select_iot

pl/sql 過程已成功完成。

fuyou@orcl> exec runstats_pkg.rs_stop( 50 )

run1 ran in 1127 hsecs

run2 ran in 825 hsecs

run 1 ran in 136.61% of the time

name run1 run2 diff

latch.enqueues 177 92 -85

latch.enqueue hash chains 190 93 -97

latch.cache buffers chains 534 380 -154

stat...elapsed time 1,130 825 -305

run1 latches total versus runs -- difference and pct

run1 run2 diff pct

2,747 2,296 -451 119.64%

pl/sql 過程已成功完成。

fuyou@orcl>

ORACLE堆表和索引組織表IOT優缺點

堆表 缺點 主鍵索引和表資料分離,增加資料所占用空間。可能主鍵索引的所占用的空間大於該錶所對應的空間 新增或者修改索引欄位時需要維護索引,索引還會產生日誌。增加io次數 通過索引的rowid來查詢rowid對應塊 資料會按照插入行所需要的空間大小按照一定順序查詢所需要的位置,沒有一定順序。優點 容易...

《MySQL DBA 索引組織表(IOT表)》

在innodb儲存引擎中,表都是根據主鍵順序組織存放的,這種儲存方式的表稱為索引組織表 index organized table 或者叫聚集索引 clustered index 1.每張表都 必須有 乙個 主鍵 2.根據 主鍵 的值構造一棵 b 樹 3.這棵b 樹的 葉子節點 leaf page ...

MySQL實現iot表 Mysql iot表

我們知道一般的表都以堆 heap 的形式來組織的,這是無序的組織方式。oracle還提供了一種有序的表,它就是索引組織表,簡稱iot表。iot表上必須要有主鍵,而iot表本身不對應segment,表裡所有的資料都存放在主鍵所在的索引的葉子節點裡。換句話說,在索引葉子節點裡的索引條目裡不僅存放了被索引...