트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 말함
데이터베이스의 상태를 변화시킨다 -> SELECT, INSERT, DELETE, UPDATE
ex> 게시판
유저가 게시글을 작성하고 올리기버튼(INSERT)을 누른 후 다시 게시판에 돌아왔을때 게시판은 자신의 글이 포함된 업데이트된 게시판을 보게 됨(SELECT)
여기서의 작업단위 : insert문과 select문
이러한 작업단위를 하나의 트랜잭션이라고 함
ACID -> 원자성, 일관성, 독립성, 지속성
원자성
트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것
일관성
트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것
트랜잭션이 진행되는동안 DB가 변경되어도 처음에 트랜잭션을 진행할때 참조한 데이터베이스로 진행해야함
독립성
둘 이상의 트랜잭션이 동시에 실행되고있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션 연산에 끼어들 수 없음
지속성
트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구 반영되어야함
commit
하나의 트랜잭션이 성공적으로 끝났고, DB가 일관성있는 상태일때 이를 알려주기 위해 사용하는 연산
rollback
하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션 원자성이 깨진 경우 rollback함
트랜잭션은 어떤 경우에 사용하나요?
작업이 한번에 반영되어야되는 것을 보장해야 할때 사용함. 은행 이체를 예로 들 수 있음. 이체 시 내 통장에서는 돈이 빠져나가고 상대 통장에 돈이 입금됨을 보장해야 함
ACID 원칙 중, 지속성을 DBMS는 어떻게 보장하나요?
Transaction 관리를 위한 DBMS의 전략
디스크(비휘발성 저장 장치)에 데이터를 저장하고, 전체 DB 일부분을 메인 메모리에 유지함.
DBMS는 데이터를 고정 길이인 페이지에 저장하며, 디스크에서 페이지 단위로 입출력이 이루어짐.
메인 메모리에 유지하는 페이지를 관리하는 모듈을 페이지 버퍼 관리자라고 부름
DBMS는 크게 쿼리 프로세서, 저장 시스템으로 나뉨
버퍼를 관리할 떄, UNDO 복구, REDO 복구가 있음
UNDO 복구
정상적으로 종료되지 않은 트랜잭션이 변경한 페이지들를 원상 복구하는 것
REDO 복구
이미 커밋한 트랜잭션의 수정을 재반영하는 복구 작업