InnoDB에서 UPDATE의 내부 동작 순서
- UPDATE 실행 시 해당 row가 속한 페이지를 Buffer Pool로 로딩
- 페이지 단위(기본 16KB)
- 작은 컬럼 하나만 바꿔도, 그 row가 있는 페이지 전체가 메모리로 올라옴
- 변경 적용 (메모리 내에서)
- 실제 데이터를 수정하고
- 해당 페이지는 "Dirty Page" 로 표시됨
- Redo Log에 변경 내용 기록 (WAL - Write Ahead Logging)
- 변경 직후 Redo Log에 먼저 기록됨
- 이건 충돌 시 복구용
- 이때 디스크에는 아직 안 씀
- Undo Log에도 기록 (MVCC / Rollback용)
- Checkpoint 또는 flush 조건 만족 시 디스크에 기록
- 일정 시간이나 페이지 수, Redo Log 크기 초과 등 조건에 따라
- Dirty Page를 디스크로 flush하여 실제 데이터 파일에 기록됨
작은 컬럼 하나만 바꿔도,
그 컬럼이 속한 페이지 전체가 Buffer Pool에 올라가고,
Dirty 체크 → Redo Log 기록 → 조건 충족 시 디스크 반영
'tech > database' 카테고리의 다른 글
[redis] aws elasticache network throttling 현상에 관하여 (0) | 2024.10.20 |
---|---|
[redis] 레디스 내부 동작 이해 : sorted set (4) | 2024.10.03 |
[Kafka] 카프카 프로듀서 (0) | 2024.09.21 |
[카프카] Simple Authentication and Security Layer(SASL) (1) | 2024.09.18 |
[MySQL] 트랜잭션 및 잠금 (1) | 2024.09.16 |