티스토리 뷰

반응형

안녕하세요. 인포믹스에서 테이블과 인덱스의 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

반응형
댓글