728x90
- 트랜잭션의 성질
- 원자성 : 트랜잭션과 관련된 작업을이 전부 수행되든지 아니면 전부 수행되지 않아야 함
- 일관성 : 트랜잭션을 수행하기 전이나 후나 데이터베이스는 항상 일관성 있는 상태를 유지해야 함
- 고립성 : 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장해야 함
- 지속성 : 성공적으로 수행을 완료한 트랜잭션은 변경한 데이터를 데이터베이스에 영구히 저장해야 함
- 동시성 제어
- 트랜잭션이 동시에 실행될 때 데이터베이스의 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능
- 갱신손실
- 동시성 제어를 하지 않는 트랜잭션들이 발생시키는 문제. 한 트랜잭션의 갱신이 다른 트랜잭션에 의하여 분실되는 현상
- 락-락의 유형
- 트랜잭션이 데이터를 읽거나 변경할 때 데이터에 표시하는 잠금 장치
- 공유락 : 읽기를 할 때 사용하는 잠금 장치
- 배타락 : 쓰기를 할 때 사용하는 잠금 장치
- 2단계 락킹
- 트랜잭션이 락을 걸고 해제하는 시점을 2단계로 나누어 시행하는 락킹 기법. 확장단계와 수축단계가 있음
- 데드락
- 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을 획득하고 상대방이 데이터에 대하여 락을 요청하여 무한 대기 상태에 빠지는 현상
- 트랜잭션 동시 실행 문제
- 오손 읽기 : 다른 트랜잭션이 COMMIT을 하지 않은 데이터를 읽은 후 다른 트랜잭션이 철회하면서 발생하는 현상
- 반복불가능 읽기 : 트랜잭션 중간에 다른 트랜잭션이 변경한 데이터를 읽으면서 발생하는 현상
- 유령데이터 읽기 : 트랜잭션 중간에 다른 트랜잭션이 삽입한 데이터를 읽으면서 발생하는 현상
- 트랜잭션 고립 수준 명령어
- 트랜잭션의 읽기/쓰기에 대한 고립 수준을 결정하는 명령. READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE 이 있음
- 로그 파일을 이용한 회복
- 재실행(REDO) : 로그 파일에 기록된 로그를 이용하여 트랜잭션이 수행한 결과를 다시 반영하는 연산
- 취소(UNDO) : 로그 파일에 기록된 로그를 이용하여 트랜잭션이 수행한 결과를 취소하는 연산
- 회복을 위한 로그 기록 방법
- 즉시갱신 : 트랜잭션은 '갱신 데이터 → 로그', '버퍼 → 데이터베이스'작업이 부분완료 전에 동시에 진행될 수 있으며 REDO, UNDO 연산을 이용하여 복구함
- 지연갱신 : 트랜잭션은 '갱신 데이터 → 로그'가 끝난 후 부분완료를 하고 '버퍼 → 데이터베이스'작업은 부분완료 후에 진행. REDO 연산을 이용하여 복구
- 체크포인트
- 데이터베이스와 트랜잭션 로그 파일을 동기화한 후, 동기화한 시점을 로그 파일에 기록하는 것
728x90
'PROGRAMMING > DataBase' 카테고리의 다른 글
[mysql/mac]Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 오류 해결방법 _ for Mac m1 (0) | 2021.05.21 |
---|---|
DATABASE_09_데이터베이스 보안과 관리 (0) | 2021.04.14 |
DATABASE_07_정규화 (0) | 2021.04.14 |
DATABASE_06_데이터 모델링 (0) | 2021.04.14 |
DATABASE_05_데이터베이스 프로그래밍 (0) | 2021.04.08 |