트랜잭션

parkrootseok·2025년 1월 4일
0

데이터베이스

목록 보기
5/10
post-thumbnail

트랜잭션이란?

트랜잭션이란 데이터베이스 내에서 수행되는 작업의 최소 단위로 무결성을 유지하며 데이터베이스의 상태를 변화시키는 기능을 수행합니다. 또한, 데이터베이스에서 여러 연산을 하나의 논리적 단위로 묶어 처리하기 위해 사용합니다. 이때, 트랜잭션의 무결성을 보장하기 위해서는 ACID 특성을 만족해야 합니다.

ACID

ACID란 트랜잭션이 데이터베이스의 무결성을 보장하기 위한 4가지 성질을 나타내는 약어입니다. ACID는 다음과 같이 구성되어 있습니다.

Atomicity (원자성)

원자성은 트랜잭션에 포함된 작업은 전부 수행되거나 전혀 수행되지 않는 성질을 말합니다. 즉, 작업 수행중에 오류가 발생할 경우 이미 수행된 작업도 모두 취소되어야 합니다.

Consistency (일관성)

일관성은 트랜잭션이 성공적으로 수행된 이후에도 데이터베이스는 일관된 상태를 유지하는 성질을 의미합니다.

Isolation (고립성)

고립성은 동시에 여러 트랜잭션이 수행될 때 각 트랜잭션은 서로 간섭 없이 독립적으로 수행하는 것을 보장하는 성질입니다. 하지만, 이러한 성질로 인해 여러 트랜잭션이 한 개의 데이터를 동시에 Update할 때 다른 트랜잭션의 Update가 무효화될 수 있습니다. 이를 막기 위해선 동시성 제어가 필요합니다.

Durability (지속성)

지속성은 트랜잭션이 성공적으로 수행되어 커밋된 내용은 이후 시스템 오류나 장애가 발생하더라도 영구적으로 보존되어야 하는 성질입니다.

동시성 제어

동시성 제어는 여러 트랜잭션이 동시에 수행되는 환경에서 데이터의 무결성과 일관성을 보장하고, 갱신 손실을 방지하기 위해 데이터 접근을 통제하는 기법입니다.

Lock

Lock은 동시성 제어를 위해 사용하는 기법 중 하나로 트랜잭션이 어떤 데이터를 사용할 경우 Lock을 걸어 다른 트랜잭션의 접근을 제어하는 방법입니다. 이를 그림으로 표현하면 다음과 같습니다.

예상 질문

Commit과 Rollback은 무엇인가요?

데이터베이스의 무결성을 보장하기 위한 명령어입니다. Commit은 트랜잭션이 성공적으로 수행되었음을 확정하는 명령어입니다. 이를 통해, 트랜잭션 작업 내용을 실제 DB에 저장하여 지속성을 보장할 수 있습니다. Rollback은 트랜잭션이 실패하거나, 사용자가 작업을 취소하고자 할 때 사용하는 명령어입니다. 이를 통해, 작업중 오류나 예외가 발생하면 트랜잭션 작업을 무효화하여 일관성과 원자성을 보장할 수 있습니다.

트랜잭션은 무엇인가요?

데이터베이스에서 실행되는 작업의 최소 단위로 어떠한 여러 연산을 하나의 논리적 단위로 묶기 위해 사용합니다. 또한, 트랜잭션은 ACID라는 성질을 가지고 있어 데이터베이스의 무결성을 보장하고 있습니다.

ACID는 무엇인가요?

ACID는 트랜잭션이 데이터베이스의 무결성을 유지하기 위해 만족해야 하는 성질입니다. 원자성, 일관성 고립성, 지속성이 있습니다.

원자성, 일관성, 고립성, 지속성은 어떠한 성질인가요?

원자성은 트랜잭션 내에 수행되는 작업이 모두 수행되거나 그렇지 않아야 하는 성질입니다.
일관성은 트랜잭션이 성공적으로 수행 후 데이터베이스의 상태도 유지되어야 하는 성질입니다.
고립성은 여러 트랜잭션이 수행될 때 서로 간섭하지 않고 독립적으로 수행되어야 하는 성질입니다.
지속성은 트랜잭션이 성공적으로 커밋된 후 어떠한 오류나 예외에 대해서도 영향을 받지않고 영구적으로 보존되어야 하는 성질입니다.

profile
동료들의 시간과 노력을 더욱 빛내줄 수 있는 개발자가 되고자 노력합니다.

0개의 댓글