일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- db
- grafana
- ASM
- signal
- Make
- OS
- Oracle GoldenGate
- C
- mysql
- install
- rac
- Linux
- MySQL Architecture
- Architecture
- influxdb
- oracle
- PostgreSQL
- cmake
- unix
- oracle architecture
- Today
- Total
목록DB/PostgreSQL_Guide (15)
Blog

UPDATE 손실 방지ww-confict(UPDATE 손실)은 동시에 Tx이 같은 Tuple을 UPDATE할 때 발생하는 현상REPEATABLE READ, SERIALIZABLE Level에서 모두 방지되어야 함READ COMMITTED Level은 방지할 필요가 없음동시 UPDATE Command의 동작UPDATE 명령이 실행되면 내부적으로 ExecUpdate()가 호출됨(1) FOR each row that will be updated by this UPDATE command (2) WHILE true /* The First Block */ (3) IF the target row is being updated THEN (4) WAIT for the termination of the transactio..

Visibility CheckVisibility Check를 설명하는 ScenarioT1: Tx 시작(txid 200)T2: Tx 시작(txid 201)T3: txid 200, 201의 SELECT Command 실행T3의 SELECT CommandT3에는 Table tbl에 Tuple_1만 있고 Rule 6에 의해 보임-- txid 200, 201 SELECT * FROM tbl; name -------- Jekyll (1 row)T4: txid 200의 UPDATE Command 실행T5: txid 200, 201 SELECT Command 실행T5의 SELECT Commandtxid 200의 Tuple_1은 Rule 7에 의해 보이지 않고 Tuple_2는 Rule 2에 의해 보임txid 201의 T..
Visibility Check Rules Visibility Check Rules(가시성 확인 규칙)은 Tuple의 t_xmin, t_xmax, clog, 획득한 Tx Snapshot을 모두 사용해 각 Tuple이 표시되는지(보이는지)의 여부를 결정하는 Rule 집합 t_xmin Status == ABORTED Rule 1: IF t_xmin status is 'ABORTED' THEN RETURN 'Invisible' END IF t_xmin의 Status가 ABORTED인 Tuple은 Tuple을 INSERT한 Tx가 ABORT되어 항상 보이지 않음 t_xmin Status == IN_PROGRESS t_xmin의 Status가 IN_PROGRESS인 Tuple은 한 조건을 제외하고 본질적으로 보이지..
Tx Snapshot개별 Tx의 특정 시점에 모든 Tx이 활성 상태인지 여부에 대한 정보를 저장한 Data Set활성 Tx는 IN_PROGRESS이거나 아직 시작되지 않은 Tx를 의미PostgreSQL은 내부적으로 Tx Snapshot의 Text 표현 형식을 100:100:으로 정의ex) 100:100:: 99보다 작은 txid는 활성화되지 않고 100보다 크거나 같은 txid를 활성화ℹ️내장 함수 txid_current_snapshot() & 해당 Text 표현 형식txid_current_snapshot()은 현재 Tx의 Snapshot을 보여줌SELECT txid_current_snapshot(); txid_current_snapshot ----------------------- 100:104:100..

ClogPostgreSQL은 clog에 Tx Status를 저장종종 clog라고 하는 Commit Log는 Shared Memory에 할당되며 Tx Processing 전반에 걸쳐 사용Transaction StatusPostgreSQL은 IN_PROGRESS, COMMITTED, ABORTED, SUB_COMMITTED의 Tx Status를 정의함SUB_COMMITTED는 Sub Tx를 위한 StatusClog의 성능Clog는 Shared Memory에 하나 이상의 Page로 구성(8KB)논리적으로 Array를 형성함Array의 Index는 각 txid에 해당하고 Array의 각 항목은 해당 Tx의 상태Clog의 동작 방식의 예T1: txid 200 COMMIT; txid 200의 Status가 IN_P..