트랜잭션 개념, 체크 포인트와 2가지 이해

트랜잭션 개념에 대한 설명
트랜잭션 개념에 대한 설명

트랜잭션 개념에 대해서 이야기해봅시다.




트랜잭션 개념에 대한 이해

트랜잭션 개념(Transaction)은 데이터베이스에 일부 업데이트 처리만 실행하기 곤란한 경우, 전체적으로 통합해서 실행하는 일련의 일괄 처리 모음을 의미합니다.

데이터베이스(DataBase)는 여러 명의 사용자들이 동시에 사용하더라도 오류가 없이 정확한 데이터를 유지해야 하며 데이터베이스의 장애가 발생해도 빠르게 정상적인 상태로 복구할 수 있어야 합니다. 이를 위해서 DBMS(Data Base Mangement System)이 역할을 하게 되며 데이터베이스가 항상 정확하고 일관된 상태가 유지할 수 있도록 트랜잭션의 개념으로 관리합니다.

트랜잭션을 통해 데이터베이스의 회복력과 병행 제어가 가능해지기 때문에 결과적으로 데이터베이스가 일관된 상태를 유지할 수 있도록 해줍니다. 트랜잭션에는 시스템 장애가 발생하였을 경우 데이터를 복구하는 작업의 단위도 포함됩니다.

트랜잭션은 데이터베이스 연산을 위한 SQL(Structured Query Languange) 문들의 집합으로 구성됩니다.

처리 중에 문제가 발생하면 처리를 취소하고 정합성을 확보하게 되며 확정된 데이터가 최종적으로 스토리지(Storage)나 데이터베이스에 반영되는 시점을 체크 포인트(Check Point)라고 합니다.




트랜잭션 개념에 대한 설명

트랜잭션 개념(Transaction)데이터베이스(Data Base)에서 사용하는 하나의 논리적인 기능을 수행하기 위한 통합된 일련의 처리 작업 단위로 데이터베이스 시스템의 복구와 병행 처리를 위한 논리적 단위입니다.

한 개의 트랜잭션(Transaction)은 Commit 되거나 Rollback 되거나 2가지 경우만 존재합니다. 트랜잭션은 보통 회복과 복구의 단위가 됩니다.

[트랜잭션의 구성 요소]

구분내용
COMMIT 연산한 작업의 논리적 단위인 트랜잭션을 성공적으로 완료시키기 위한 연산 처리
ROLLBACK 연산트랜잭션 처리가 비정상적으로 종료되었을 때 모두 취소 시키는 연산 처리

트랜잭션(Transaction)은 원자성(Atomicity), 일관성(Consistency), 독립성과 격리성(Isolation), 영속성과 지속성(Durability)의 특징을 가지고 있습니다.

트랜잭션의 연산은 데이터베이스에 데이터가 모두 반영되거나 전혀 반영되지 않거나 2가지 경우의 수만 존재해야 합니다. 즉, 트랜잭션 안의 모든 명령들은 완벽하게 수행되어야 하며 하나라도 문제가 있으면 전부 롤백되어 취소되어야 합니다.

트랜잭션은 실행이 성공하면 항상 일관성이 있는 상태로 구성되어 있어야 합니다. 그리고 2개 이상의 트랜잭션이 실행되는 동안에 다른 트랜잭션의 연산은 끼어들 수 없으며 수행 중인 트랜잭션이 완전하게 종료될 때까지 다른 트랜잭션의 결과는 참조할 수 없도록 되어 있습니다. 그리고 성공적으로 완료한 트랜잭션에 대한 결과는 영구적이어야 합니다.

트랜잭션의 모든 데이터 처리에 대한 명령문은 완벽하게 처리되거나 하나도 처리되지 않아야지만 데이터베이스에 모순이 없는 일관된 상태를 유지할 수 있게 됩니다. 따라서 트랜잭션에서는 데이터베이스의 데이터 처리 과정에서 오류나 장애가 발생하였을 때 무결성과 일관성을 보장하기 위해서 롤백 처리가 될 수 있습니다.

데이터베이스 관리 시스템(DBMS)에서는 트랜잭션을 이용하여 데이터베이스에 장애가 발생하면 복구 작업을 수행하고 여러 명의 사용자들이 동시에 사용할 수 있도록 제어 작업을 수행합니다. 데이터베이스의 무결성과 일관성을 보장하기 위해서 작업을 수행하는데 필요한 처리 연산들을 하나의 트랜잭션으로 정의하고 관리합니다.

일반적으로 데이터베이스를 변경하는 구문인 INSERT 문, DELETE 문, UPDATE 문을 트랜잭션으로 관리하게 됩니다.

신뢰성이 있는 트랜잭션은 원자성, 일관성, 고립성, 영속성의 4가지 성질을 가져야 하며 이를 ACID 특성이라고 부릅니다. ACID는 Atomicity, Consistency, Isolation, Durability의 약자입니다.

처리를 되돌리는 롤백(Roll Back)의 경우 데이터베이스에 대한 갱신 과정에서 트랜잭션 도중 커밋하기까지의 문제가 발생하였을 때 원래대로 되돌리는 기능입니다.

롤 포워드(Roll Forward)는 체크 포인트 이후에 커밋(Commit)이 완료한 데이터에 장애가 발생한 경우에 로그(Log)를 기반으로 반영하는 것을 말합니다.