본문 바로가기
컴퓨터공학/데이터베이스(database)

[Recovery]disk i/o

by 바코94 2020. 6. 3.

disk i/o는 atomic해야한다.

 

데이터베이스는 disk에 저장되어있고 system buffer가 main memory에 위치한다. 트랜잭션도 ram에 위치하며 read()를 하면 디스크에 x가 있는 페이지를 읽어서 시스템 버퍼로 가져온다. 그 후 트랜잭션이 시스템 버퍼에 있는 x 데이터를 가져온다. 버퍼에 x가 있는 페이지가 있다면 안 가져와도 된다.

write의 경우에도 똑같이 디스크에 있는 페이지를 찾아서 시스템 버퍼에 가져오고 나서 시스템 버퍼에 있는 페이지의 데이터를 변경하게 된다. 버퍼에 있는 페이지를 디스크에 쓰는 작업을 한다. 이것은 output이라고 한다. output작업은 write시 마다 하는 것은 아니고 버퍼가 꽉 찼을 때 제거 대상이 되거나 할 때 하는 식으로 한다.

 

 

이 때, failure가 발생하게 되면 버퍼에 있는 페이지들이 사라진다. 그러면 db가 inconsistency하게 될 것이다. 

'컴퓨터공학 > 데이터베이스(database)' 카테고리의 다른 글

[Recovery]Log-based recovery  (0) 2020.06.04
[Recovery] Log  (0) 2020.06.04
[Recovery] Overview  (0) 2020.06.03
[Transaction]Transaction Isolation in SQL  (0) 2020.06.01
[Concurrency Control]Insert and Delete opertaion  (0) 2020.06.01