트랜잭션 편집하기
최신판 | 당신의 편집 | ||
56번째 줄: | 56번째 줄: | ||
==특징== | ==특징== | ||
=== 무정지성 === | === 무정지성 === | ||
− | 트랜잭션 기능의 대표적인 이점 중 하나는 무정지성의 향상이다. 즉, [[운영체제]] [[ | + | 트랜잭션 기능의 대표적인 이점 중 하나는 무정지성의 향상이다. 즉, [[운영체제]] [[장애]] 등의 서버 장애가 발생하여 그로부터 데이터베이스를 재가동한 때에 '장애 직전까지의 커밋 결과를 손실하지 않고 마치는 것'이 가능하다. 트랜잭션을 지원하지 않는 데이터베이스의 경우 OS 장애뿐만 아니라 데이터베이스 프로세스가 비정상적으로 종료하기만 해도 데이터베이스가 손상될 수 있다. 깨진 데이터베이스를 복구하려고 해도 일부 데이터가 없어지거나 완전히 복구되지 않는 등 완전한 회복이 불가능한 경우도 많다. [[오라클]](Oracle)과 InnoDB 같은 트랜잭션 대응의 데이터베이스에서는 이러한 문제가 발생하지 않는데, REDO 로그(데이터베이스에서 수행한 작업을 다시 실행하는 로그)를 이용한 아키텍처로 무정지성을 보장하고 있기 때문이다. |
* '''REDO 로그''' : 열 값과 인덱스를 갖는 데이터 파일에는 커밋을 할 때마다 기록을 하는 것이 아니라 캐시 영역에 보관해 두고 정기적으로 디스크에 기록하는 동작을 하는데 REDO 로그 파일이 최신 커밋 정보를 가지고 있는 반면, 본체의 데이터 파일은 오래된 데이터를 가지고 있게 된다. 그래도 캐시 영역에 최신 데이터가 있기 때문에 데이터 파일에 이전 데이터밖에 없더라도 애플리케이션에서 보면 최신 데이터를 읽고 쓸 수 있어 모순된 상태가 되지는 않는다. 서버 장애 등의 이유로 데이터베이스가 멈춰서 재기동을 하게 되는 경우 데이터 파일이 이전 데이터밖에 남지 않았을 때 REDO 로그의 내용을 데이터 파일에 적용시켜 나감으로써 데이터 파일과 REDO 로그의 LSN과 일치시키는 작업을 수행한다. 이 과정을 충돌 복구(Clash Recovery)라고 한다. | * '''REDO 로그''' : 열 값과 인덱스를 갖는 데이터 파일에는 커밋을 할 때마다 기록을 하는 것이 아니라 캐시 영역에 보관해 두고 정기적으로 디스크에 기록하는 동작을 하는데 REDO 로그 파일이 최신 커밋 정보를 가지고 있는 반면, 본체의 데이터 파일은 오래된 데이터를 가지고 있게 된다. 그래도 캐시 영역에 최신 데이터가 있기 때문에 데이터 파일에 이전 데이터밖에 없더라도 애플리케이션에서 보면 최신 데이터를 읽고 쓸 수 있어 모순된 상태가 되지는 않는다. 서버 장애 등의 이유로 데이터베이스가 멈춰서 재기동을 하게 되는 경우 데이터 파일이 이전 데이터밖에 남지 않았을 때 REDO 로그의 내용을 데이터 파일에 적용시켜 나감으로써 데이터 파일과 REDO 로그의 LSN과 일치시키는 작업을 수행한다. 이 과정을 충돌 복구(Clash Recovery)라고 한다. |