여러 데이터 아이템들을 접근 또는 업데이트하기위한 단위.
트랜잭션은 데이터베이스의 일관성을 유지하도록 해야 한다.
Transaction의 성공적 실행의 실패.
abort되었을때, transaction의 중간 결과는 DB에 반영되면 안됨.
rollback이란? transaction abort발생시 그 transaction 수행 이전 상태로 되돌리는 작업
Transaction의 성공적 실행 성공.
DB를 새로운 상태로 변경할 수 있음.
partially committed 상태와 committed 상태의 차이점
스택오버플로우
partially committed 상태는 트랜잭션의 모든 요소들이 수행되었을때, 발생한다.
그리고 RDBMS가 데이터베이스의 변화를 유지하기위해서 논리적으로는 커밋했지만 실제적으로는 그것들이 반영되지 않았을 때를 의미한다.
"논리적으로"의 의미는 트랜잭션의 작업들이 수행된 이후에 여전히 실패할 가능성이 존재하기 때문이다. 이 실패 가능성 때문에, RDBMS는 이후에 실패가 발생할지라도 다시 복구하거나 업데이트 할 수 있도록 disk에 충분한 정보를 기록한다
Log는 stable storage에 위치.
Log record로 구성됨( Log Record는 하나의 DB write연산을 나타냄, Log는 데이터베이스의 모든 갱신 작업을 기록한다. )
Redo는 복구 시 이미 했던 작업을 그대로 다시 처리함.
Undo는 이전의 작업을 반대로 진행.
모든 DB의 변경들은 Log로 반영하는데, write에 의한 DB변경은 Partially Commit 이후로 지연시킨다.
Partially Commit 이후, Write에 의한 변경 내용을 DB로 반영시킴.
이 작업은 Redo를 사용.
The DB modification is deferred or delayed until the last operation of transaction is executed.
데이터베이스 변경이 트랜잭션이 아직 실행중일 때 발생하는 경우, 사용된다.
데이터베이스는 매 작업 이후로 즉시 변경된다.( 트랜잭션이 Active 상태일 때, 변경사항을 DB에 반영 가능하게 함)
If the system crash or transaction aborts,
then the old value field of the log records is used to restore the modified data items to the value they had prior to start of the transaction.( 이 작업은 Undo를 사용 )
Virtual Memory기법을 쓰는 시스템의 경우, Page fault가 발생!
Page fault란? 프로그램이 자신의 주소 공간에는 존재하지만, RAM에는 없는 데이터에 접근을 시도했을 경우 발생.
Block B1을 swap-out하고, Block B2를 swap-in해야 할 경우
1. Block B1에 관련된 모든 Log record를 Log file에 기록.
2. Block B1을 DB로 출력.
3. Block B2를 DB에서 main memory(RAM)으로 가져옴.
swap-out : RAM에 위치하는 데이터를 보조기억장치(Hdd, ssd)에 저장
swap-in : 반대로 보조기억장치에서 RAM으로 가져오는 것
Page, Memory Frames, Page table을 갖는 Paging기법을 사용하는 시스템에서 이용.
Paging 기법이란 ? : 가상 메모리(Virtual Memory)에서는 현재 이용하려는 데이터 전부를 가지고있지 않는다.
데이터가 저장되어있는 시작 주소값을 사용하는 방법은, 연속된 메모리공간 확보가 어렵다. Paging 기법은, 데이터의 물리적 주소공간이 연속되지 않아도 되는 메모리 관리 기법이다.
Page Table : 가상주소를 물리적 주소로 바꾸어주기 위한 Table
Memory Frame : 메모리를 Frame이라는 것으로 분할한 것
Pages : 프로세스를 Page로 구분하여 분할한 것
current page table과, shadow page table을 이용한다.
current page table은 실행 중 변경될 수 있다. 반면에 shadow page table은 변경되지 않는 것을 알 수 있다.
트랜잭션을 커밋하는 데에는 순서가 아래와 같다.
transaction에 의해 변경된 Buffer pages들을 Physical database로 출력.
current page table을 disk로 출력
current page table의 disk address를 shadow page table의 address를 포함하는 stable storage에 overwrite한다.
(이 작업 이후, current page table == shadow page table)