티스토리 뷰

DataBase

[MySQL] 트랜잭션과 ACID

메성 2020. 4. 1. 22:10
반응형

트랜잭션

  • 트랜잭션은 한 번 질의가 실행되면 질의가 모두 수행되가 모두 수행되지 않는 작업수행의 논리적인 단위이다.
  • 즉, query를 하나 실행했을 때, 중간에 실행이 중단되었을 경우에는 처음부터 다시 실행할 수 있도록 Rollback 이 수행되고, 오류 없이 모든 실행이 완료되면 commit 을 실행하는 단위이다.
  • 트랜잭션은 DBMS의 성능 측정에 직접적인 영향을 가지고 있다.
    • DBMS의 성능은 초당 트랜잭션의 실행 수(Transaction per second)로 측정되기 때문이다.

 

 

트랜잭션을 왜 사용하는가?

  • 가장 큰 이유는, 병렬 처리로 인해 DB 서버에 여러 개의 클라이언트가 동시에 액세스하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 데이터의 부정합성을 방지 하고자 할 때 사용한다.

 

 

트랜잭션의 4가지 특성 : ACID

원자성(Atomicity)

  • All or Noting의 개념으로서, 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말한다.
  • 즉, 트랜잭션은 분해가 불가능한 최소의 단위인 원자처럼 동작하는 의미를 가져와 원자성이라고 말하는 것이다.
  • 트랜잭션은 성공 아니면 실패 단 2가지 경우 밖에 없는 것이다.
  • Ex. 게시판에 글을 올릴 때, 해당 글이 정상적으로 올라가거나 올라가지 않는 경우만 있는 것이다. 절반만 올라가는 경우는 없다.

 

일관성(Consistency)

  • 트랜잭션의 작업이 실행되기 전이나 후의 데이터베이스 상태는 일관되어야 한다는 것이다.
  • 즉, 데이터는 정의된 규칙에서만 수정이 가능하여, 트랜잭션 작업 후에 숫자형 컬럼에 문자형 값이 저장되면 안되는 것이다.
  • Ex. 게시판에 글을 올릴 때, 제목 길이는 255로 제한되어 있는데 트랜잭션 작업 이후 길이가 변경되면 안되는 것이다.

 

고립성(Isolation)

  • 트랜잭션 작업 중에는 다른 트랜잭션에 영향을 주어서도 안되고, 다른 트랜잭션들에 의해 간섭을 받아서도 안된다는 것을 말한다.
  • 트랜잭션 작업 중에 다른 트랜잭션의 영향을 받게 되면 자신의 동작이 달라 질 수가 있어, 트랜잭션 자신은 항상 고립된 상태에서 수행되어야 한다.
  • 다수의 트랜잭션이 동시에 수행 중인 상황에서 현재 실행 중인 트랜잭션이 완료될 때까지는 다른 트랜잭션에서 보거나 참조할 수 없다.
  • Ex. 철수와 영희가 게시판에 글을 동시에 올린다고 가정할 때, 두 트랜잭션이 충돌이 일어나 철수 글의 제목과 영희 글의 내용이 올라가는 것이 아니라, 철수 글이 올라갈 때까지 기다린 후 영희 글이 올라가게끔 진행하는 것이다.

 

지속성(Durablility)

  • 성공적으로 수행되는 트랜잭션은 영원히 반영되는 것을 말하는 것으로, commit을 하면 현재 상태는 영원히 보장된다.
  • 다시 말해, 트랜잭션이 성공적으로 완료된 후에는 다른 트랜잭션에 의해 변경되기 전까지는 변하면 안 되는 것이다.
    • 소프트웨어 혹은 하드웨어적인 장애가 발생하는 일이 있더라도! 변하면 안된다.
  • MySQL을 포함해 많은 데이터에비스의 구현에서는 트랜잭션 조작을 하드 디스크에 로그로 기록하고 시스템 이상이 발생하면 해당 로그를 사용하여 이상 발생 전까지 복원하는 것으로 지속성을 실현하고 있다.
반응형

'DataBase' 카테고리의 다른 글

[MySQL] 비밀번호 초기화  (0) 2020.04.02
[MySQL] Adaptive Hash Index  (0) 2020.04.01
[MySQL] MyISAM vs InnoDB  (0) 2020.02.17
[MySQL] InnoDB  (0) 2020.02.17
[MySQL] MyISAM  (0) 2020.02.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함