티스토리 뷰
안녕하세요. 인포믹스에서 테이블과 인덱스의 dbspace 위치를 이동시키는 ALTER FRAGMENT INIT 문장에 대해서 테스트한 것을 정리해보겠습니다. 원래 ALTER FRAGMENT INIT 문장은 기존의 테이블의 파티션 스키마를 수정하기 위한 용도인데 파티션되지 않은 테이블에도 적용되어서 테스트를 해보았습니다.
데모용 데이터베이스의 stores_demo:customer 테이블을 사용하여 아래와 같이 customer_copy라는 테이블을 만들고 데이터를 63만건 정도 입력했습니다.
drop table customer_copy;
create raw table "informix".customer_copy
(
customer_num serial not null ,
fname char(15),
lname char(15),
company char(20),
address1 char(20),
address2 char(20),
city char(15),
state char(2),
zipcode char(5),
phone char(18)
) in dbs1;
create index customer_copy_ix1 on "informix".customer_copy (zipcode) in dbs2;
insert into customer_copy select * from customer connect by level < 5;
oncheck -pt 명령으로 Number of pages used를 보면 약 90 MB 정도의 공간을 차지하고 있습니다. 테이블과 인덱스를 각각 이동시킨 후에 같은 명령으로 다시 확인해보겠습니다.
$ oncheck -pt stores_demo:customer_copy
TBLspace Report for stores_demo:informix.customer_copy
Physical Address 6:6263799
Creation date 10/26/2020 17:01:40
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-maps
Maximum row size 134
Number of special columns 0
Number of keys 0
Number of extents 2
Current serial value 129
Current SERIAL8 value 1
Current BIGSERIAL value 1
Current REFID value 1
Pagesize (k) 2
First extent size 8
Next extent size 128
Number of pages allocated 45568
Number of pages used 45542
Number of data pages 45530
Number of rows 637420
Partition partnum 2097320
Partition lockid 2097320
Extents
Logical Page Physical Page Size Physical Pages
0 6:1546 8 8
8 6:1562 45560 45560
Index customer_copy_ix1 fragment partition dbs2 in DBspace dbs2
Physical Address 3:8
Creation date 10/26/2020 17:01:40
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-maps
Maximum row size 134
Number of special columns 0
Number of keys 1
Number of extents 2
Current serial value 1
Current SERIAL8 value 1
Current BIGSERIAL value 1
Current REFID value 1
Pagesize (k) 2
First extent size 4
Next extent size 128
Number of pages allocated 1664
Number of pages used 1608
Number of data pages 0
Number of rows 0
Partition partnum 3145733
Partition lockid 2097320
Extents
Logical Page Physical Page Size Physical Pages
0 7:3 512 512
512 7:1027 1152 1152
기존 테이블의 위치를 dbs1에서 dbs3으로 이동시켰습니다. oncheck -pe 명령으로 확인해보면 페이지가 이동했음을 확인할 수 있습니다.
$ echo "ALTER FRAGMENT ON TABLE customer_copy INIT IN dbs3;" | (time dbaccess stores_demo)
Database selected.
Alter fragment completed.
Database closed.
real 0m2.622s
user 0m0.005s
sys 0m0.003s
$ oncheck -pe dbs1 | grep customer_copy
$ oncheck -pe dbs3 | grep customer_copy
stores_demo:'informix'.customer_copy 11 45568
oncheck -pt 명령으로 다시 확인해보았습니다. 테이블의 dbspace 위치가 dbs1에서 dbs3으로 바뀌면서 페이지 이동이 일어나면서 reorg도 되었네요. 물론 공간이 남아 있었기에 가능했습니다. 또한 인덱스도 같은 dbspace에 있지만 페이지가 이동한 것을 확인할 수 있습니다. 명시적으로 extent를 지정할 수 없기 때문에 reorg를 하는 용도로는 적합하지 않은 방법 같네요.
$ oncheck -pt stores_demo:customer_copy
TBLspace Report for stores_demo:informix.customer_copy
Physical Address 4:8
Creation date 10/26/2020 17:16:35
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-maps
Maximum row size 134
Number of special columns 0
Number of keys 0
Number of extents 1
Current serial value 129
Current SERIAL8 value 1
Current BIGSERIAL value 1
Current REFID value 1
Pagesize (k) 2
First extent size 8
Next extent size 128
Number of pages allocated 45568
Number of pages used 45542
Number of data pages 45530
Number of rows 637420
Partition partnum 4194309
Partition lockid 4194309
Extents
Logical Page Physical Page Size Physical Pages
0 8:11 45568 45568
Index customer_copy_ix1 fragment partition dbs2 in DBspace dbs2
Physical Address 3:10
Creation date 10/26/2020 17:16:36
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-maps
Maximum row size 134
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
Current SERIAL8 value 1
Current BIGSERIAL value 1
Current REFID value 1
Pagesize (k) 2
First extent size 4
Next extent size 128
Number of pages allocated 1920
Number of pages used 1805
Number of data pages 0
Number of rows 0
Partition partnum 3145735
Partition lockid 4194309
Extents
Logical Page Physical Page Size Physical Pages
0 7:2179 1920 1920
작은 테이블은 금방 끝나는 작업이지만 큰 테이블은 테스트를 먼저 해보는 게 좋을 것 같습니다.
www.ibm.com/support/knowledgecenter/SSGU8G_14.1.0/com.ibm.sqls.doc/ids_sqs_0084.htm
- Total
- Today
- Yesterday