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 |