본문 바로가기

Database

[HANA] Savepoint

CCH (Consistent Change)

  • Any chanes in persisted page
  • CCH operation은 DB image의 변경을 발생시키는 모든 종류의 database operation 포함
  • CCH protocol이라 불리는 pre-defined step의 set을 따름
  • CCH shared lock - data volume의 write access 보장 위해
  • CCH exclusive lock - 전체 persistence layer에 concurrent write access로부터 보호하기 위해

 

 

Consistent System Recovery

  • = recovery 도중에 어떠한 Data의 loss도 없이 복구 하는 것
             ---------Data---------------------Log -----------
                                            ↑
                                            Log position (replay from here)
  • inconsistent 상황이란
    • committed transaction이 어떤 volume에도 없는 경우 (lost)
      ---------Data----------   -----------Log -----------
    • committed transaction이 양쪽 volume에 모두 존재하는 경우 (overlapped)
      ---------Data-----------
                                -----------Log-------------
  • 따라서 Data volume과 Log volume의 consistency가 중요함
  • ==> CCH protcol과 CCH lock을 통해서 관리 됨

 

 

Persistence      

  •  In-memory data의 휘발성으로부터 data의 persistent를 위해 persistence layer (그림에서는 persistence storage) 존재
  • 지속적인 저장을 위해
    • log volume은 disk에 지속되어야 하는 모든 종류의 operation을 저장
      • Logger는 open log buffer의 redo log entries를 저장
      • Log buffer가 full이 되거나 Transaction이 commit 될 때 수행 
    • Savepoint는 5분(Default) 마다 수행되는 data snapshot으로 log volume의 부담을 줄여주기 위해 사용됨
      • 메모리의 Dirty pages가 data volume으로 flush 됨

 

 

Log write / SAVEPOINT 수행 단계

  • CCH Protocol (Log Write)

    • Start consistent change operation (Update)
    • Savepoint의 concurrent writing 방지를 위해 Consistent change lock 획득 (Shared-Lock) 
    • Page 변경
    • Redo log entries와 undo information을 log volume에 write
    • Page가 변경되었음을 알리는 Flag set
    • Close consistent change operation --> Shared lock을 release
  • SAVEPOINT

    • Disk에 아직 써지지 않은 모든 pages들 선정
      • Savepoint coordinator triggers writing of all these pages and waits until the I/O operation are complete
      • 이때, log volume은 writing이 수행중
      • [참고] Critical phase 진입을 위한 설정
        • if the critical phase takes too long. the DB decides to trigger it at a later point in time when the workload is lower.
        • The time limit for the critical phase 를 위한 parameter
          • savepoint_pre_criticla_flush_retry_threshold (default = 3 sec)
          • 해당 시간에 도달하면 savepoint를 다음으로 연기
        • 무한정 기다리지 않기 위해
          • savepoint_max_pre_critical_flush_duration (default = 900 sec)
          • 여기에 도달하면 savepoint는 hard로 trigger 됨
            (The criticl phase will be triggered hard after this time)
    • Savepoint coordinator는 consistent change lock(X-Lock) 획득 
      • persistence level의 concurrent write operations을 block
    • Savepoint coordinator는 1 단계 동안에 변경된 모든 페이지를 산정하여 temporay buffer로 copy 수행
    • Current log position을 가져옴
      • savepoint log position 
      • restart 시 log가 이 시점부터 필요하게 됨
    • Asynchronous writing to disk is triggerd
      • Tempoary buffer with pages modifed since phase 1
      • List of open transaction
      • Restart record (log position)
      • Buffered log entries up to the savepoint log position
    • Consistent change lock이 release됨 (즉 IO가 trigger되고 바로 release됨)
      • Transaction manager는 다시 transaction이 start/close 가능함을 알림
    • 이전 Savepoint에서 'free after savepoint'로 mark된 page (=shadow pages)를 'free'로 marking

 

 

CCH Locks

 

 

Shadow Pages

  • Write operation에서 새로운 physical pages에 Write를 하고 기존의 Savepoint version을 유지하는 것 --> Two version of one Page
  • Savepoint 수행 중 system crash가 발생하여도 이전 savepoint에 의해서 복구 가능

 

'Database' 카테고리의 다른 글

[HANA] High availability support  (0) 2019.04.12
[HANA] SAP Notes 2600030 - Parameter Recommendations in SAP HANA Environments  (0) 2019.04.12
[HANA] Memory Control  (0) 2019.04.11
[HANA] Timeout관련 파라미터  (0) 2019.04.11
[HANA] Delta Merge  (0) 2019.04.11