본문 바로가기
공부/Mysql

mysql 트랜잭션 ACID

by 띵커베르 2023. 2. 1.
728x90
  • 트랜잭션 
    • 데이터베이스의 상태를 변경하는 여러개의 작업을 단위로 묶어서 처리하는 것.
    • 이러한 트랜잭션은 ACID 의 성질에 만족해야 한다
    • 트랜잭션이 시작되면 전체 트랜잭션이 완료될 때까지 작업이 보장되어야 한다.
    • ACID
      • 원자성(Atomicity)
        • 트랜잭션은 완전한 단위이며 하나의 트랜잭션의 작업들은 모두 수행되거나, 수행되지 않거나를 보장한다.
          • 모든 작업이 성공하거나 실패하는 특성입니다. 트랜잭션에 포함된 모든 작업이 정상적으로 완료되거나, 하나의 작업이라도 실패하면 트랜잭션 전체가 롤백되어 모든 작업이 취소됩니다.
      • 일관성(Consistency)
        • 트랜잭션이 수행되면 데이터베이스의 상태는 일관적인 유효한 상태로 변경된다.
        • 데이터의 성질이 변경되지않는다
          • 트랜잭션이 실행된 후에도 데이터베이스가 일관된 상태를 유지해야 하는 특성입니다. 즉, 데이터베이스의 제약 조건을 만족해야 합니다.
          • 예를 들어, 데이터베이스에 사용자 정보를 저장한다고 가정해보겠습니다. 이때, 사용자의 아이디는 고유한 값이어야 합니다. 따라서 데이터베이스에 아이디가 중복되는 데이터가 저장되지 않도록 제약조건을 설정해야 합니다. 이렇게 제약조건이 설정되어 있으면, 사용자가 중복된 아이디로 회원가입을 시도하면 데이터베이스가 이를 감지하여 중복된 데이터를 저장하지 않고 오류를 반환합니다.

            이와 같이 일관성(Consistency)은 데이터베이스의 제약조건을 준수하여 데이터베이스가 일관된 상태를 유지할 수 있도록 하는 것입니다.
      • 격리성(Isolation)
        • 트랜잭셔은 독립적으로 수행되며, 다른 트랜잭션에 영향을 받지 않는다.
          • 각 트랜잭션이 다른 트랜잭션에 영향을 받지 않도록 격리되어야 하는 특성입니다. 즉, 동시에 여러 트랜잭션이 실행되더라도 각 트랜잭션은 서로에게 영향을 주지 않고 독립적으로 실행되어야 합니다.
      • 지속성(Durability)
        • 트랜잭션이 정상적으로 완료되면, 그 결과는 영구적으로 보존된다.(commit)
          • 트랜잭션이 정상적으로 완료되면 그 결과는 영구적으로 유지되어야 하는 특성입니다. 데이터베이스에 기록된 모든 데이터는 디스크에 영구적으로 저장되어야 하며, 시스템 오류나 다른 문제로 인해 중단되더라도 데이터의 일부 손실이 없어야 합니다.

예를 들어, 데이터베이스에 사용자 정보를 저장한다고 가정해보겠습니다. 이때, 사용자의 아이디는 고유한 값이어야 합니다. 따라서 데이터베이스에 아이디가 중복되는 데이터가 저장되지 않도록 제약조건을 설정해야 합니다. 이렇게 제약조건이 설정되어 있으면, 사용자가 중복된 아이디로 회원가입을 시도하면 데이터베이스가 이를 감지하여 중복된 데이터를 저장하지 않고 오류를 반환합니다.

이와 같이 일관성(Consistency)은 데이터베이스의 제약조건을 준수하여 데이터베이스가 일관된 상태를 유지할 수 있도록 하는 것입니다.

728x90

댓글