티스토리 뷰

반응형

인포믹스 online.log 파일에서 체크포인트 수행시 발생하는 메시지 관련해 테스트한 내용을 공유드립니다.

인포믹스 버전은 12.10.FC12였고 메시지는 아래와 같은 형식으로 표시되었습니다.

 

16:20:40  Physical Logging while in Critical Section: Number of pages logged in critcal section: 20 Remaining Phyical Log: 11665210

 

메시지로 볼때 한 트랜잭션내에서 많은 건수를 처리하는 것이 아닌가 추측되었는데요. 먼저 해당 메시지가 발생하는 시간대의 쿼리들을 확인해보았습니다. 몇가지 의심되는 쿼리를 찾았지만 특정짓기가 어려웠는데, 팀에서 logical log 파일에서 해당 시각의 트랜잭션 이력을 찾았고 해당시각의 트랜잭션중 truncate 로 인해 유발된 것임을 확인해 주셨습니다.

 

이에 유사한 규모의 테이블을 truncate 했을때 동일한 현상이 발생하는지 테스트해보았습니다.

아래와 같이 약 5 GB 의 더미 데이터를 입력하고 인덱스도 하나 만들었습니다.

 $ oncheck -pt demo:bigtable



TBLspace Report for demo:bigtable

    Physical Address               6:12
    Creation date                  06/23/2022 21:54:32
    TBLspace Flags                 902        Row 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              1
    Current serial value           1
    Current SERIAL8 value          1
    Current BIGSERIAL value        1
    Current REFID value            1
    Pagesize (k)                   2
    First extent size              400000
    Next extent size               320000
    Number of pages allocated      2880000
    Number of pages used           2778371
    Number of data pages           2777681
    Number of rows                 50000000
    Partition partnum              6291465
    Partition lockid               6291465

    Extents
         Logical Page     Physical Page        Size Physical Pages
                    0          6:975383     2880000    2880000

                  Index bigtable_idx1 fragment partition datadbs in DBspace datadbs

    Physical Address               6:13
    Creation date                  06/24/2022 14:37:56
    TBLspace Flags                 802        Row Locking
                                              TBLspace use 4 bit bit-maps
    Maximum row size               107
    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              179439
    Next extent size               17943
    Number of pages allocated      179439
    Number of pages used           128715
    Number of data pages           0
    Number of rows                 0
    Partition partnum              6291466
    Partition lockid               6291465
    Last Lookup/Scan               No Record

    Extents
         Logical Page     Physical Page        Size Physical Pages
                    0         6:3855383      179439     179439

테스트용 스크립트는 체크포인트와 truncate table이 동시에 실행되도록 백그라운드로 실행되도록 준비했습니다.

$ cat test.sh
onmode -c &
dbaccess demo truncate.sql &

스크립트 실행은 약 2초 정도 소요되었고 online.log 에는 아래와 같이 동일한 메시지가 발생되었습니다.

09:52:31  Physical Logging while in Critical Section: Number of pages logged in critcal section: 40 Remaining Phyical Log: 16139
09:52:31  Physical Logging while in Critical Section: Number of pages logged in critcal section: 80 Remaining Phyical Log: 16099
09:52:31  Physical Logging while in Critical Section: Number of pages logged in critcal section: 120 Remaining Phyical Log: 16059
09:52:32  Physical Logging while in Critical Section: Number of pages logged in critcal section: 160 Remaining Phyical Log: 16019
09:52:32  Physical Logging while in Critical Section: Number of pages logged in critcal section: 200 Remaining Phyical Log: 15979
09:52:32  Physical Logging while in Critical Section: Number of pages logged in critcal section: 240 Remaining Phyical Log: 15939
09:52:32  Physical Logging while in Critical Section: Number of pages logged in critcal section: 280 Remaining Phyical Log: 15897
09:52:32  Physical Logging while in Critical Section: Number of pages logged in critcal section: 320 Remaining Phyical Log: 15857
09:52:32  Physical Logging while in Critical Section: Number of pages logged in critcal section: 360 Remaining Phyical Log: 15817
09:52:33  Physical Logging while in Critical Section: Number of pages logged in critcal section: 400 Remaining Phyical Log: 15777
09:52:33  Physical Logging while in Critical Section: Number of pages logged in critcal section: 440 Remaining Phyical Log: 15737
09:52:33  Physical Logging while in Critical Section: Number of pages logged in critcal section: 480 Remaining Phyical Log: 15697
09:52:33  Physical Logging while in Critical Section: Number of pages logged in critcal section: 520 Remaining Phyical Log: 15655
09:52:33  Checkpoint Completed:  duration was 2 seconds.
09:52:33  Sat Jun 25 - loguniq 2036, logpos 0x3a6048, timestamp: 0x18f8e672 Interval: 17469

해당 시각의 트랜잭션 로그를 onlog로 열어보니 truncate 가 완료된 후 checkpoint가 수행되었음을 확인할 수 있습니다.

$ onlog -n 2036 > onlog.2036
$ vi onlog.2036
addr     len  type     xid      id link
...
3a4018   56   BEGIN    21       2036 0        06/25/2022 09:52:30 113      informix
3a4050   48   PTRUNCATE 21       0  3a4018     60000a    1
3a4080   48   PTRUNCATE 21       0  3a4050     600009    1
3a40b0   204  HUPBEF   21       0  3a4080   40011d   b02      137
3a417c   204  HUPAFT   21       0  3a40b0   40011d   b02      137
3a4248   316  HUPBEF   21       0  3a417c   40011f   2501     251
3a4384   316  HUPAFT   21       0  3a4248   40011f   2501     251
3a44c0   352  HUPBEF   21       0  3a4384   40016e   301      286
3a4620   352  HUPAFT   21       0  3a44c0   40016e   301      286

addr     len  type     xid      id link
3a4780   332  HUPBEF   21       0  3a4620   40016e   302      265
3a50e8   332  HUPAFT   21       0  3a4780   40016e   302      265
3a5234   204  HUPBEF   21       0  3a50e8   40011d   b02      137
3a5300   204  HUPAFT   21       0  3a5234   40011d   b02      137
3a53cc   56   BEGCOM   21       0  3a5300
3a6018   48   TRUNCATE 21       0  3a53cc     600009    1
3a6048   68   CKPOINT  1        2036 0        1
              begin    xid      id addr     user
              2036     21       2036 3a6018   informix
3a7018   44   HA       1        0  3a6048   CKPTEND  17469
3a7044   40   SYNC     1        0  3a7018
3a8018   48   TRUNCATE 21       0  3a6018     60000a    1
3a8048   56   COMMIT   21       0  3a8018   06/25/2022 09:52:33

IBM Community에 해당 메시지가 정보성인지, 오류에 의한 것인지 조언을 구했는데 Art Kagel , John Lengyel 의 답변으로 정보성 메시지임을 알게 되었습니다. 12.10.FC15 버전부터는 내부 계산에 의해 physical log가 부족한 상황에서만 해당 메시지가 표시되도록 수정되었다고 합니다.

Art의 설명을 요약해보면 truncate 실행이 critical sections 에 머무는 동안은 checkpoint가 수행될 수 없는데, 이는 일반적인 현상이고 오류는 아니라는 거지요. 참고로 LOB 데이터가 포함된 테이블의 경우 truncate나 drop이 오래 걸립니다. truncate가 critical sections에서 수행되는 동안 physical log가 기록되다가 overflow 되면 그 기간 동안의 트랜잭션은 recover, rollback 될 수 없는 위험이 있습니다. 물론 truncate 작업이 오래 걸리지 않고, physical log가 충분한 경우라면 그런 상황은 발생하지 않겠죠. 말 그래도 일반적인 상황인거죠.

 

기본적으로는 physical log가 충분한 크기로 구성되어 있어야 하고, critical section에 머무는 truncate나 drop, alter 등의 관리 작업을 실행할 때는 수행시간이 길게 예상되는 트랜잭션은 실행을 피하는게 좋을 것 같습니다.

 

John의 언급을 보면 이 메시지가 나타다더라도 사용자가 뭔가 조치를 할 수 있는 것은 별로 없지만, 지원팀에서는 원인 파악에 도움이 될거라는군요. 버전이 바뀌면 로그에 새로운 메시지가 발견되곤 하는데 이 메시지가 그런 경우인 것 같습니다.

 

https://community.ibm.com/community/user/hybriddatamanagement/discussion/physical-logging-while-in-critical-section-in-online-log?ReturnUrl=%2fcommunity%2fuser%2fhybriddatamanagement%2fcommunities%2fcommunity-home%2fdigestviewer%3fcommunitykey%3dcf5a1f39-c21f-4bc4-9ec2-7ca108f0a365 

반응형
댓글