2 분 소요

Transaction(트랜잭션)이란?

하나의 논리적인 작업 단위를 의미한다. 즉, 하나의 작업을 수행할 때 다른 작업이 개입되지 않게 보장되는 것이다.

트랜잭션 사용 이유

트랜잭션은 하나의 작업을 보장해주는 것과 같은데, 이 기능의 좋은 점은 하나의 작업 도중 완벽히 처리가 되지 않거나 처리하지 못할 경우에는 실행 이전 상태로 복구 시켜서 작업의 일부만 적용되지 않게 방지해주는 기능이다. 그렇기 때문에 사용자 입장에서는 하나의 작업을 논리적 단위로 이해를 할 수 있으며, 시스템 입장 또한 인지할 수 있는 프로그램의 단위가 된다.

트랜잭션 특성(ACID)

트랜잭션은 일련의 데이터베이스 연산으로 구성되며, 이러한 연산은 여러 특성을 갖고 있다. 각 특성은 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durablity)이다. 이러한 특성들을 약자로 ACID라고도 불리며, 각 특성의 의미는 다음과 같다.

  • 원자성(Atomicity): 트랜잭션의 모든 연산은 완벽히 수행되거나 전혀 수행되지 않아야 한다.
  • 일관성(Consistency): 트랜잭션의 수행 결과는 항상 일관성 있어야 한다. 즉, 데이터베이스 내의 제약 조건이 항상 유지되어야 한다.
  • 독립성(Isolation): 여러 개의 트랜잭션이 동시에 실행될 때, 각각의 트랜잭션은 서로 영향을 주지 않아야 한다.
  • 지속성(Durability): 트랜잭션의 결과는 영구적으로 유지되어야 한다. 즉, 시스템이 고장나거나 재시작 되어도 트랜잭션의 결과는 유지되어야 한다.

트랜잭션의 주의할 점

트랜잭션은 모든 범위에 적용하는 것이 좋지 않다. 꼭 필요한 최소한의 범위에만 적용하는 것이 좋은데, 그 이유로는 일반적으로 데이터베이스 커넥션은 개수가 제한적이다. 그 가운데 각 단위 프로그램이 커넥션을 소유하는 시간이 길어진다면 사용 가능한 여유 커넥션이 줄어들며, 무분별하게 사용하게 되면 각 단위 프로그램에서 커넥션을 가져가기 위해 기다려야 하는 상황이 발생할 수도 있다.

  • 이외에도 트랜잭션은 데이터의 무결성과 일관성을 보장하기 위해 중요한 개념인 만큼 다룰 때 주의해야할 점들이 몇 가지 존재한다. 예를들어 트랜잭션의 격리 수준 등

트랜잭션 로그(Tansaction Log)

트랜잭션 로그는 데이터베이스에서 발생하는 모든 트랜잭션의 작업 내용을 기록하는 파일이다. 이 파일은 데이터베이스 시스템에서 장애나 다운 등의 예기치 못한 상황이 발생했을 때, 데이터베이스의 일관성을 보장하고 데이터 손실을 최소화하는 데 사용된다.

트랜잭션 로그에 포함된 정보

  • 트랜잭션 식별자(Transaction ID)
    • 트랜잭션이 생성된 시점을 식별하는 고유 번호
  • 작업 내용(Operation)
    • 트랜잭션에서 수행된 작업(INSERT, UPDATE, DELETE 등)에 대한 정보
  • 이전 상태(Old Value)
    • 트랜잭션에서 수행된 작업 이전의 데이터 상태
  • 새로운 상태(New Value)
    • 트랜잭션에서 수행된 작업 이후의 데이터 상태
  • 로그 시간(Time Stamp)
    • 트랜잭션 로그가 기록된 시간

트랜잭션 로그 기능

위의 트랜잭션 로그에 포함된 정보들을 토대로 다음과 같은 기능을 수행할 수 있다.

  • 원복 기능
    • 데이터베이스 시스템에서 예기치 않은 문제가 발생했을 떄, 트랜잭션 로그를 사용하여 이전 상태로 복구할 수 있다.
  • 재실행 기능
    • 트랜잭션 로그를 사용하여 실패한 트랜잭션을 다시 실행 할 수 있다.
  • 복구 기능
    • 데이터베이스 시스템이 다운되거나 재부팅되었을 때, 트랜잭션 로그를 사용하여 데이터베이스를 복구할 수 있다.
  • 성능 향상 기능
    • 일부 데이터베이스 시스템에서는 트랜잭션 로그를 사용하여 데이터베이스 작업을 최적화하는 기능을 제공한다.

즉, 트랜잭션 로그는 데이터베이스 시스템의 안정성과 신뢰성을 유지하기 위해 매우 중요한 역할을 한다.

참고 사이트

  • https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database#transaction
  • https://learn.microsoft.com/ko-kr/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-ver16

업데이트: