create table emp
as
select object_id empno,
object_name ename,
created hiredate,
owner job
from all_objects
/
alter table emp add constraint emp_pk primary key(empno)/
begin dbms_stats.gather_table_stats(user, 'EMP', cascade=> true);
end;
/
create table heap_addresses
(empno references emp(empno) on delete cascade,
addr_type varchar2(10) ,
street varchar2(20) ,
city varchar2(20) ,
state varchar2(2) ,
zip number,
primary key (empno ,addr_type)
)
/
create table iot_addresses
(empno references emp(empno) on delete cascade,
addr_type varchar2(10) ,
street varchar2(20) ,
city varchar2(20) ,
state varchar2(2) ,
zip number,
primary key (empno ,addr_type)
)
ORGANlZATION INDEX
/
## 데이터 저장
ops$tkyte%ORA11GR2> insert into heap_addresses
2 select empno, 'WORK', '123 main street' , 'Washington ', 'DC' , 20123
3 from empi
72075 rows created.
ops$tkyte없RA11GR2> insert into iot_addresses
2 select empno , 'WORK', '123 main street ' , 'Washington ' ' 'DC' , 20123
3 from empi
72075 rows created.
## 통계정보 수집
exec dbms_stats.gather_table_stats( user , 'HEAP_ADDRESSES');
exec dbms_stats.gather_table_stats( user, 'IOT_ADDRESSES' );
## HEAP 결과
....
....
Statistics
o recursive calls
o db block gets
*11* consistent gets
o physical reads
o redo size
1153 bytes sent via SQL*Net to client
419 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
o sorts (memory)
o sorts (disk)
4 rows processed
## IOT 결과
...
...
Statistics
o recursive calls
o db block gets
*7* consistent gets
o physical reads
o redo size
1153 bytes sent via SQL*Net to client
419 bytes received via SQL*Net from client
2 SQL*Net roundtrips to /from client
o sorts (memory)
o sorts (disk)
4 rows processed
-- 물리적 읽기 수행만 있었지만, 이것도 비용이 드는 작업 이기 때문에 비용이 적게 든다고 말하기는 힘들다.
-- 논리적인 읽기가 줄어들면서 내부적으로 메모리 구조를 관리하는 래치가 줄어든것을 확인할 수 있다.
create table stocks
( ticker varchar2(10) ,
day date,
value number,
change number,
high number,
low number,
vol number,
primary key( t icker,day)
)
organizati on index
/
-- 힙구조 테이블을 사용했다면, 동일한 데이터베이스 블록에 같은 주식의 로우 2개가 함께 있을 가능성은 거의 없다.
-- 왜냐하면, 전체 주식에 대한 일자별 기록이 매일 밤에 입력되기 때문이다.
create table iot
( x int,
y date,
z varchar2(2000),
constraint iot_pk primary key (x)
)
organization index
pctthreshold 10
overflow
/
create table iot
( x int,
y date,
z varchar2(2000),
constraint iot_pk primary key (x)
)
organization index
including y
overflow
/
h4.logical rowid