gi_dor

트랜잭션(Trasaction) 이란 ? 본문

DataBase

트랜잭션(Trasaction) 이란 ?

기돌 2024. 8. 19. 10:07
728x90

 트랜잭션은 '데이터베이스의 상태를 변화 시키기 위해 수행하는 작업의 단위' 

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

1. 게시판에 사용자는 글을 작성하고 작성버튼을 누른다
2. 그후에 다시 게시판 목록으로 돌아온다
3. 게시판은 자신의 글이 포함되어 업데이트된 게시판을 보게된다

이런 상황을 데이터베이스 작업으로 옮기면  INSERT 문을 사용해 작성한 글을 데이터로 저장
그후에 게시판을 구성한 데이터를 다시 SELECT 하여 최신정보로 유지
여기서 작업의 단위는 INSERT 문과 SELECT 문을 합친것이다 , 이런 작업 단위를 하나의 트랙잭션이다

작업의 단위는 질의어 한문장이 아니다
지금까지는 INSERT 따로 SELECT 따로 인줄 알았지만 작성과 조회 이 두과정을 묶어서 트랜잭션이라고한다
또한 이 두과정은 동시에 성공하던지 동시에 실패해야 한다.

데이터베이스에서 테이블의 데이터를 읽어온 후 입력하거나 갱신 삭제 도중 오류가 발생하면
모든작업을 원상태로 복구하고 , 모두 성공 하였을 때만 그 결과를 반영한다

 


MYSQL 트랜잭션

 MySQL 에서 트랜잭션은 데이터베이스의 상태를 바꾸는 일종의 작업단위이다

사실은 MySQL의 입력하는 모든 쿼리 명령어들은 각각 하나의 트랜잭션이라 할수 있다
INSERT , UPDATE , DELETE , CREATE  , ALTER  , DROP , TRUNCATE 등의 명령문을 통해 데이터의 상태를 바꿀 때 마다 자동적으로 COMMIT을 실행하여 변경된 내역을 데이터베이스의 반영하는 것이다 

Git의 Commit과 유사하다

 

다시 한번 말하지만 작업의 단위는 질의어 한문장이 아니다
작업 단위란 많은 질의어 명령문을 사람이 정하는 기준에 따라 정하는것을 의미한다

 


트랜잭션 특징

정처기 필기 혹은 SQLD를 공부하다보면 트랜잭션 특징 ACID에 대해 알수 있다

원자성 Atomicity
트랜잭션이 데이터베이스에 모두 반영되던가 , 모두 반영되지 않아야한다

일관성 Consistency 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야한다

트랜잭션이 진행되는 동안 데이터베이스가 변경되더라도 , 처음에 트랜잭션을 진행하기위해
참조한 데이터베이스로 진행된다

독립성 Isolation
어떤 하나의 트랜잭션이라도 다른 트랜잭셕의 연산에 끼어들수 없다

영구성 Durability
지속성이라고도 하며 트랜잭션이 완료되었을 경우 , 그 결과는 영구적으로 반영되야한다


Commit

Commit은 모든작업들을 정상 처리하겠다고 확정하는 명령어다, 해당 처리 과정을 DB에 영구저장한다는 의미다
Commit을 수행하면 하나의 트랜잭션 과정이 종료되는 것이다

Commit을 수행하면 이전 데이터가 완전하게 반영되어 UPDATE 된다

 

Roll Back

Roll Back은 작업 도중 문제가 발생되어 트랜잭션의 처리 과정에서 발생한 변경사항을 취소 하는 명령어다
해당 명령을 트랜잭션에 하달하면 트랜잭션은 시작되기 이전의 상태로 되돌아간다

마지막 Commit 완료 시점으로 돌아간다는 말이다

728x90