728x90
index page 최대 개수에 대해 조사하다보니 extent 할당에 대해서도 우연히 문서를 읽게 되었습니다.
IBM Knowledge Center에 따르면 11.70.xC1 버전부터 partition header pages의 공간이 부족해지면 secondary header pages가 자동으로 할당된다고 합니다.
https://www.ibm.com/support/knowledgecenter/SSGU8G_11.70.0/com.ibm.perf.doc/ids_prf_309.htm
If you have a table that needs more extents and the database server runs out of space on the
partition header page, the database server automatically allocates extended secondary partition
header pages to accommodate new extent entries.
The database server can allocate up to 32767 extents for any partition, unless the size of a table
dictates a limit to the number of extents.
따라서 11.70 버전부터 extent가 최대 32,767개 까지 할당됩니다. 관리할 점은 줄었네요.
그렇지만 성능을 고려한다면 개수를 적게 유지하는 것이 좋겠죠.
아래와 같이 데이터를 대량으로 입력해서 extent 개수를 많이 늘려보았습니다.
일반적으로는 EXTENT DOUBLING 규칙에 의해 extent 크기가 2배씩 커지지만 작은 페이지 크기로 일정하게 할당되도록 NO_EXTENT_DOUBLING 옵션을 활성화 했습니다.
참고로 NO_EXTENT_DOUBLING 옵션은 11.70.xC9부터 사용가능합니다.
drop table "informix".log_01;
create table "informix".log_01
(
col1 varchar(50),
col2 varchar(32),
col3 varchar(5),
col4 varchar(5),
col5 varchar(10)
) in dbs1 extent size 16 next size 16 lock mode page;
...
아래의 SQL문장으로 1천만건의 레코드를 입력합니다.
$ nohup dbaccess -e demo /informix/skjeong/insert1.sql > /informix/skjeong/insert1.log 2>&1 &
$ cat insert1.sql
insert into log_01
select 'dolore eu fugiat nulla pariatur. Excepteur sint oc',
'180e70d7-8684-4674-8d42-3c1e5f3b',
'labor',
'eiusm',
level
from sysmaster:sysdual
connect by level <= 10000000;
데이터 입력중에 oncheck 명령으로 테이블의 extent 수를 확인해보았습니다.
와우! 2356개입니다. EXTENT DOUBLING이 되고 한계가 3만2천개라면 거의 제한이 없는 것으로 봐도 되겠지요.
TBLspace Report for demo:informix.log_01
Physical Address 2:5
Creation date 02/17/2020 13:23:41
TBLspace Flags 901 Page Locking
TBLspace contains VARCHARS
TBLspace use 4 bit bit-maps
Maximum row size 107
Number of special columns 5
Number of keys 0
Number of extents 2356
Current serial value 1
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 301056
Number of pages used 301056
Number of data pages 300981
Number of rows 5422921
Partition partnum 2097154
Partition lockid 2097154
Extents
Logical Page Physical Page Size Physical Pages
0 6:5000427 8 8
8 6:5000483 8 8
16 6:5000611 16 16
32 6:5000851 32 32
64 6:5001395 64 64
128 6:5002675 128 128
256 6:5004083 128 128
384 6:5005363 128 128
512 6:5006515 128 128
...
728x90
'Informix > informix reference' 카테고리의 다른 글
USE_FALLOCATE 설정으로 Chunk 빠르게 만들기 (0) | 2020.03.10 |
---|---|
프로시저의 PDQ 값 확인하기 (0) | 2020.02.27 |
Index의 페이지 수 제한 증가 (0) | 2020.02.16 |
문자열의 특수문자 제거하기 (0) | 2020.01.17 |
Informix의 파티션 테이블에서 rowid 참조하기 (0) | 2020.01.03 |