普通表與堆表測試對比
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,表裡所有的資料都存放在主鍵所在的索引的葉子節點裡。換句話說,在索引葉子節點裡的索引條目裡不僅存放了被索引...