- [ 학습기록/CS 공부 ][DB/쉬운코드] 트랜잭션과 동시성 제어 (ACID/이상 현상)2024-05-03 17:06:02트랜잭션J가 H에게 20만원을 이체하는 상황을 SQL문으로 작성해보면 위와 같다. 이체 작업은 두 SQL문이 모두 성공해야만 성공한다. 즉, 하나라도 실패해서는 안된다. 트랜잭션은 하나의 논리적인 작업 단위를 의미한다. 즉, 논리적인 이유로 여러 SQL문을 단일 작업으로 묶어서 처리해야 하는 것을 의미한다. 위 이체 작업을 트랜잭션으로 처리하면 일부만 성공해서 DB에 반영되는 일이 일어나지 않는다.START TRANSACTION; /* 트랜잭션의 시작 (= AUTOCOMMIT 비활성화) */UPDATE account SET balance = balance - 200000 WHERE id = 'J';UPDATE account SET balance = balance + 200000 WHERE id = 'H'..
- [ 학습기록/CS 공부 ][DB] 트랜잭션 (ACID/격리 수준)2024-02-05 03:09:44트랜잭션이란? 트랜잭션은 작업의 단위를 의미한다. 트랜잭션은 일관적이어야 하며 다른 트랜잭션에 고립적이어야 한다. 시스템 장애가 발생해도 올바르게 복구하여 데이터베이스의 일관성을 유지해야 한다. 데이터베이스에 동시에 접근하는 프로그램들을 격리시켜야 한다. 트랜잭션은 논리적인 작업의 단위로, 다수의 연산(쿼리)으로 구성될 수 있다. ACID 트랜잭션은 완전히 반영되거나 아예 반영되지 않아야 하고 (원자성) 기존 제약조건을 변경하지 않아야 하며 (일관성) 다른 트랜잭션에 영향을 미치지 않아야 한다. (고립성) 그리고 한 번 변경된 사항은 영구적으로 유지되어야 한다. (지속성) ACID 속성을 보장하기 위해서는 강력한 로깅 시스템이 트랜잭션을 적절하게 처리할 수 있어야 한다. atomicity 트랜잭션 내의 ..