728x90

➡️트랜잭션

  • 트랜잭션은 DBMS가 데이터베이스를 다룰 때 사용하는 작업의 단위이다.
  • 트랜잭션은 데이터베이스의 무결성을 유지하기 위해 원자성, 고립성, 지속성의 성질을 갖는다.DBMS는 트랜잭션이 이러한 성질을 유지할 수 있도록 지원한다.
  • 데이터베이스에서 데이터를 다룰 때  장애가 일어나는경우에 데이터를 복구하는 작업의 단위가 된다.
  • 데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 때 서로 분리하는 단위가 된다.

➡️트랜잭션의 수행 과정

 

아래와 같은 트랜잭션의 수행 과정은 2가지 방법으로 나눠진다.

방법 1 : 1 - 2 - 3 - 4 - Commit - 5 - 6 

방법 2 : 1 - 2 - 3 - 4 - 5 - 6 - Commit

+@Commit은 트랜잭션의 수행이 완료가 된것을 트랜잭션 관리자에게 알려주는 연산이다.Commit을 사용하는 이유는 DBMS가 일괄적으로 하드디스크에 접근하여 처리함으로써 개별 접근하는 것을 피하고  사용자에게 빠른 응답성을 보장하기 위해서 이다.

이 두가지 방법중에서 DBMS는 클라이언트에세 빠른 응답성을 보장하기 위해 방법 1을 선택한다.

이유는 수행결과를 데이터베이스에 기록하는 5,6의 과정이 시간이 많이 소요되고,다른 트랜잭션이 또 사용중인 테이블이 필요할 수 있기 때문이다.즉 트랜잭션은 임시로 종료선언하고 실제 데이터 베이스에 기록하는 것은 DBMS가 수행한다.

  1. 1.A계좌의 값을 하드디스크(데이터베이스)에서 주기억장치 버퍼로 읽어온다.
  2. B계좌의 값을 하드디스크(데이터베이스)에서 주기억장치 버퍼로 읽어온다.
  3. A 계좌에서 10000원을 인출한 값을 저장한다
  4. B 계좌에서 10000원을 입금한 값을 저장한다.
  5. A 계좌의 값을 주기억장치 버퍼에서 하드디스크(데이터베이스)에 기록한다.
  6. B 계좌의 값을 주기억장치 버퍼에서 하드디스크(데이터베이스)에 기록한다.

 

 

➡️트랜잭션 성질(ACID 성질)

  • 원자성(Atomicity)
    • 트랜잭션에 포함된 작업은 전부 수행되거나 전부 수행되지 않아야 한다.
    • 트랜잭션이 중간에 끊기면 이후에 해당 트랜잭션의 어디서부터 이어 수행해야되어야 하는지 모르기 때문에 작업이 잘못되면 회복 알고리즘을 이용하여 변경한 내용을 취소한다.
  • 일관성(Consistency)
    • 트랜잭션을 수행하기 전이나 후나 데이터베이스는 항상 일관된 상태를 유지해야 한다.
  • 고립성(Isolation)
    • 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경중인 데이터 값을 훼손하지 않아야한다.
    • 고립성을 유지하기 위해서는 여러 트랜잭션이 동시에 접근하는 데이터에 대한 제어가 필요하다.
  • 지속성(Durability)
    • 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 한다.
    • 트랜잭션의 성공 결과 값은 장애발생 후에도 변함없이 보관되어야 한다는 것으로 트랜잭션이 정상적으로 완료(Commit)된 경우에는 버퍼의 내용을 하드디스크에 확실히 기록하여야 하며, 부분 완료(Partial Commit)된 경우에는 작업을 취소(Aborted)하여야  한다.

 

➡️트랜잭션과 DBMS

  • DBMS는 원자성을 유지하기 위해 회복관리자 프로그램을 작동시킨다.회복 관리자 프로그램은 데이터베이스가 변경한 내용을 로그로 기록하고 있다가 트랜잭션에 문제가 생겼을 때 원래 상태로 되돌린다.
  • DBMS는 일관성을 유지하기 위해 무결성 제약조건을 활용한다.트랜잭션 수행 시 데이터에 변경이 가해지면 미리 정의해 둔 무결성 제약조건을 검사하여 일관성이 깨지는 것을 막는다.
  • DBMS는 고립성을 유지하기 위해 일관성을 유지하는 것과 마찬가지로 동시성 제어 알고리즘을 작동시킨다.동시성 제어 알고리즘을 작동시켜 여러 트랜잭션이 동시에 같은데이터를 접근할 때 마치 한 트랜잭션씩 순서대로 접근하는 것처럼 제어한다.
  • DBMS는 지속성을 유지하지 위해 회복관리자 프로그램을 이용한다. 회복관리자 프로그램은 데이터베이스가 변경한 내용을 로그로 기록하고 있다가 트랜잭션에 문제가 있을 때 원래 상태로 되돌린다.

 


Reference

  • Mysql로 배우는 데이터베이스 개론과 실습 

 

 

 

 

  •  

 

728x90