300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동적 프로그래밍
- 구글 킥스타트
- 파이썬
- 동적프로그래밍
- 코딩 테스트
- AI
- 딥러닝
- kick start
- DFS
- linux
- 운영체제
- nlp
- 프로그래머스
- 리눅스
- 브루트포스
- CSS
- OS
- BFS
- 알고리즘
- 그래프
- 백준
- 코딩테스트
- 코딩
- 프로그래밍
- 킥스타트
- 네트워크
- 순열
- google coding competition
- dp
- PYTHON
Archives
- Today
- Total
오뚝이개발자
[DB] CH16. 리커버리 시스템(Recovery system) 본문
728x90
300x250
Recovery system이란?
트랜잭션 failure나 system crash 또는 disk failure 같은 것들이 실행 도중 일어났을 때 데이터 무결성을 보장하기 위한 일종의 복구 체계
Log-Based Recovery
Log record 분석에 기반한 recovery mechanism.
Immediate DB Modification
트랜잭션이 commit되기 전에 buffer나 disk로의 update를 허용하는 것
Recovery from failure
- Undo
- <T1,X,V1,V2> : write old value V1 to X -> going backwards
- log에 <commit>이나 <abort>가 없는 경우
- Redo
- <T1,X,V1,V2> : write new value V2 to X -> going forward
- log에 <commit>이나 <abort>가 있는 경우
Checkpoint를 쓰는 이유는?
만약 checkpoint를 안 쓰고 전체에 대해 redo/undo를 한다고 가정하면 아래와 같은 문제가 있다.
- 시스템이 작동한지 오랜 시간이 지났다면 전체 로그 기록을 처리하는 것은 time-consuming
- 이미 DB(Stable storage)에 output된 트랜잭션에 대해 불필요한 redo를
Log record buffering이란?
log record가 stable storage에 가기 전에 main memory에 저장되는 것(buffered)
WAL(Write-Ahead Loggin)이란?
main memory의 block이 DB(stable storage)로 output되기 전에 해당 block의 데이터와 관계된 log record가 모두 stable storage로 output되어 있어야 함(Before writing data, log record is output first)
728x90
300x250
'CS 기초 > DB' 카테고리의 다른 글
[DB] CH15. 동시성 제어(Concurrency control) (0) | 2020.11.06 |
---|---|
[DB] CH14. 트랜잭션(Transaction) (0) | 2020.11.06 |
[DB] CH11. 인덱싱(Indexing) (0) | 2020.11.04 |
[DB] CH11. 해싱(Hashing) (0) | 2020.11.03 |
[DB] CH10. 스토리지와 파일 구조(Storage & File structure) (0) | 2020.11.03 |
Comments