티스토리 뷰

프로그래밍 기초/database

트랜잭션이란?

StartCoriny 2024. 2. 19. 21:22

트랜잭션(Transaction)이란?

데이터베이스에서 하나의 논리적인 기능을 수행하기 위한 작업단위이며, 데이터베이스 관련연산의 가장 기본적인 단위입니다.

즉, 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위입니다.

데이터베이스의 상태를 변화시킨다 라는 말은 SQL 질의어를 이용해 데이터베이스를 접근하는 것을 의미합니다.

SQL질의어 - SELECT, INSERT, DELETE, UPDATE

작업의 단위는 질의어 한문장이 아닙니다.
작업의 단위를 하나의 쿼리에 종속하는 것이 아닌 작업 단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미합니다. 즉, 여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화 하여 처리하는 작업을 뜻합니다.
ex)
게시판 사용자는 게시글을 작성하고 올리기 버튼을 누릅니다.
그 후 게시판에 다시 돌아왔을 때 게시판은 자신의 글이 포함된 업데이트된 게시판을 볼수 있습니다.
이러한 상황을 데이터 베이스 작업으로 옮기면, 사용자가 올리기 버튼을 눌렀을 시,
Insert문을 사용하여 사용자가 입력한 게시글의 데이터를 옮깁니다.
그 후, 게시판을 구성할 데이터를 다시 Select하여 최신 정보로 유지합니다.
여기서 작업의 단위는 insert문과 select문 둘다를 합친것입니다.
즉, 이러한 작업단위가 하나의 트랜잭션입니다.

여러가지의 예로 
작업한 내역을 저장하는 로깅 작업,  영화관의 예매 시스템,
은행의 결제 시스템 같은 데이터의 일관성을 유지해야하는 다양한 상황에서 사용하게 됩니다.

● 트랜잭션은 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적인 단위입니다.

● 하나의 트랜잭션은 데이터베이스에 접근하고 갱신하는 하나의 질의문 또는 여러 질의문으로 구성됩니다.

● 트랜잭션은 일반적으로 회복의 단위로 Commit 되거나 Rollback됩니다.

● 트랜잭션은 원자성, 일관성, 격리성, 영속성의 특징을 가집니다.

 

트랜잭션의 특징(ACID)

ACID란 - 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가르키는 약어이다.

트랜잭션 특징 설명
Atomicity(원자성) 트랜잭션은 DB에 모두 반영되거나, 전혀 반영되지 않아야 한다는 성질.
= 완료되지 않은 트랜잭션의 중간 상태를 DB에 반영해서는 안된다.

원자성이란, 나눠질 수 없는 단일 작업이라는 것을 의미한다.

• 원자성(Atomicity)은 트랜잭션의 가장 대표적인 특징이다.

• 여러개의 작업들을 묶어 하나의 작업단위로 보게된다.
Consistency(일관성) 트랜잭션 작업처리결과는 항상 일관성 있어야 한다.
= 데이터베이스는 항상 일관된 상태로 유지되어야한다.

작업이 성공할 경우 아무런 문제가 발생하지 않고,
  실패하더라도 작업을 진행하던 도중 실패한 상태로 데이터를 방치하지 않는 특징.

• 실패하였다면, ROLLBACK이 실행되어 트랜잭션 시작 전 상태로 복구
Isolation(격리성, 독립성) 둘 이상의 트랜잭션이 동시 실행되고 있을 때,
어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들수 없다.
= 각각의 트랜잭션은 서로 간섭 없이 독립적으로 이뤄져야단다.

트랜잭션이 실행 중인 경우 다른 트랜잭션에 의해 데이터가 변경되는 것을 방지

• 트랜잭션이 완전히 수행되거나 완전히 수행되지 않은 상태를 외부에서 참조할 수는 있지만,
  트랜잭션의 중간 과정이나 중간 결과를 볼 수 없도록 하는 특징

• MySQL에서는 사용중인 DB 오브젝트에 락(Lock)을 걸어 격리성을 구현.
  락(Lock)을 건 상태는 DB에 접속한 또다른 클라이언트가 해당 DB 오브젝트를 읽거나, 
  사용할 수 없도록 방지하여, 데이터 무결성을 보장
Durability(지속성, 영속) 트랜잭션이 성공적으로 완료되었으면 결과는 영구 반영되어야한다.

트랜잭션이 성공적으로 커밋된 후,
  해당 트랜잭션에 의해 생성 또는 수정된 데이터가 어떠한 상황에서도 보존되는 특징

트랜잭션의 안전성을 보장하며,
  데이터 손실 없이 시스템의 안정성을 유지하는데 중요한 역할을 담당

• 해당 트랜잭션에 의해 생성 또는 변경된 데이터는
  데이터베이스에 COMMIT 명령을 통해 영구적으로 저장

• 트랜잭션 수행 도중 시스템이 비정상 종료되더라도,
  시스템은 트랜잭션 로그(Transaction Log)를 통해 아직 커밋되지 않은 트랜잭션을 복구

 

 

 

'프로그래밍 기초 > database' 카테고리의 다른 글

공간 데이터란?  (0) 2024.04.16
Prisma 사용하기  (0) 2024.02.08
SQL Injection이란?  (1) 2024.02.08
1:1관계, 1:N관계, N:M관계  (1) 2024.02.06
데이터 무결성 제약 조건  (0) 2024.02.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함