ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL, MariaDB] Transaction에 대하여
    Programming/Database 2022. 4. 13. 23:56

    트랜잭션: 쪼갤 수 없는 업무 처리의 최소 단위를 말한다 / 데이터 부정합을 방지하기 위하여 사용
    •작업 완료시 커밋
    •오류 발생 시 롤백
    •트랜잭션은 디비 서버에 여러개의 클라이언트가 동시에 액세스하거나 프로그램이 갱신을 처리하는 과정에서 중단 될 수 있는 등 데이터 부정합을 방지하고자 할 때 사용한다.


    •ACID(4가지 조건): 
    1)Atomicity(원자성) : 하나의 트랜잭션이 더 이상 쪼갤 수 없는 최소 업무 단위, 트랜잭션이 디비에 전부 반영되거나 반영 안되거나, 중간에 문제 발생하면 중단이 아닌 모두 성공, 실패로 되어야함 100개의 명령으로 구성된 트랜잭션이 99개 성공하고 1개 실패해도 실패로 하고 트랜잭션 시작 전 상태로 롤백 되어야함
    *원자성 보장: 수행하고 있는 트랜잭션에 의해 변경된 내역을 유지하면서, 이전에 커밋된 상태를 임시 영역에
    따로 저장함으로써 보장 => 변경 된 작업 내역 유지하면서 변경 전 내역 또한 보관

    2)Consistency(일관성) : 트랜잭션이 완료된 결과값이 일관적인 DB 상태를 유지하는 것을 말한다. 시스템이
    가지고 있는 고정요소는 수행 전과 후의 상태가 같아야한다는 것으로 트랜잭션의 작업 처리 결과가 항상 일관
    성이 있어야한다는 뜻.
    *일관성 보장: 트랜잭션 수행 전/후에 데이터 모델의 모든 제약 조건(기본 키, 외래 키, 도메인, 도메인 제약조건 등)을 만족하는 것을 통해 보장한다. 예)한 테이블에서 기본 키(primary)의 데이터가 변경되면 외래키로 지정된 다른 테이블에서도 똑같이 변경되야 하는 것이다. 

    3)Isolation(고립성) : 하나의 트랜잭션 수행 시 다른 트랜잭션 작업이 끼어들지 못하도록 보장하는 것, 
    트랜잭션 끼리는 서로 간섭할 수 없다.
    *고립성 보장: 병행처리 과정에서 고립성 보장의 중요성을 알 수 있다. 데이터를 읽거나 쓸 때는 문을 잠궈서 다른 트랜잭션이 접근하지 못하도록 고립성을 보장하고, 수행을 마치면 언락을 통해 데이터에 다른 트랜잭션이 접근 할 수 있도록 하는 것이다. 

    4)Durability(지속성) : 트랜잭션이 정상적으로 종료된 다음에는 영구적으로 데이터베이스에 작업의 결과가 저장되어야 한다. 이는 트랜잭션의 성공 결과 값은 장애 발생 후에도 변함없이 보관되어야 한다는 것으로 버퍼의 내용을 하드디스크(데이터베이스)에 확실히 기록해야하며, 부분완료 된 경우에는 작업 전체를 취소 해야한다.


    •상태: 활동, 실패, 철회, 부분 완료, 완료
    •커밋, 롤백, 세이브포인트(임시저장)
    •MySQL기준 BEGIN 또는 START TRANSACTION 명령어로 시작, END,COMMIT,ROLLBACK등 명령어로 마무리하면 블록안의 명령어들은 하나의 명령어 처럼 처리됨.

    댓글

Designed by Kort.