mysql 트랜잭션 예제

mysql 트랜잭션 예제

MySQL에서 일부 문은 롤백할 수 없습니다. CREATE 또는 DROP 데이터베이스, CREATE, ALTER 또는 DROP 테이블 또는 저장된 루틴과 같은 DDL 명령문입니다. 이러한 명령문 없이 트랜잭션을 디자인 해야 합니다. 기본적으로 MySQL은 자동 커밋 모드를 사용하도록 설정한 상태로 실행됩니다. 즉, 트랜잭션 내에서 달리 되지 않을 때 각 문은 START 트랜잭션 및 COMMIT에 의해 둘러싸인 것처럼 원자성입니다. 롤백을 사용하여 효과를 취소할 수 없습니다. 그러나 명령문 실행 중에 오류가 발생하면 문이 롤백됩니다. 원자성: ACID 모델의 원자성 측면은 주로 InnoDB 트랜잭션을 포함합니다. 관련 MySQL 기능에는 다음과 같습니다: 자동 커밋 모드를 사용하지 않으려면 START 트랜잭션 문을 사용합니다. 다음 예제를 참조하십시오: 이름에서 알 수 있듯이 트랜잭션은 이 명령문으로 시작됩니다. 기본적으로 다음 문은 트랜잭션이 종료될 때까지 단일 작업 단위로 처리해야 한다고 MySQL에 통보합니다. 트랜잭션을 사용하려면 먼저 SQL 문을 논리적 부분으로 분할하고 데이터를 커밋하거나 롤백해야 하는 시기를 결정해야 합니다. 다음 명령은 자동으로 트랜잭션을 종료 (명령을 실행 하기 전에 COMMIT를 수행 한 것 처럼): SET 트랜잭션 격리 수준 트랜잭션에 대 한 격리 수준을 변경할 수 있습니다 ….

섹션 6.7.3을 참조하십시오. 여기서는 PHP 함수를 사용하여 트랜잭션을 사용하는 프로세스를 설명합니다. 트랜잭션은 하나의 단일 작업 단위인 것처럼 수행되는 데이터베이스 조작 작업의 순차적 그룹입니다. 즉, 그룹 내의 각 개별 작업이 성공하지 않으면 트랜잭션이 완료되지 않습니다. 트랜잭션 내의 작업이 실패하면 전체 트랜잭션이 실패합니다. Atomicity – 이것은 작업 단위 내의 모든 작업이 성공적으로 완료되도록 합니다. 그렇지 않으면 트랜잭션이 실패 시점에 중단되고 이전 작업이 이전 상태로 롤백됩니다. MySQL은 트랜잭션을 제어하는 다음과 같은 중요한 문을 제공합니다: BEGIN 또는 SET AUTOCOMMIT=0을 사용하는 경우 이전 업데이트 로그 대신 백업에 MySQL 바이너리 로그를 사용해야 합니다.

트랜잭션은 롤백된 트랜잭션이 저장되지 않도록 COMMIT시 한 청크의 이진 로그에 저장됩니다. 섹션 4.9.4를 참조하십시오. ACID(원자성, 일관성, 격리, 내구성)는 데이터베이스 트랜잭션이 안정적으로 처리되도록 보장하는 속성 집합입니다. MySQL에서 InnoDB 스토리지 엔진은 ACID 호환 기능을 지원합니다. 다음 섹션에서는 MySQL 기능, 특히 InnoDB 스토리지 엔진이 ACID 모델의 범주와 상호 작용하는 방법에 대해 설명합니다: 격리 – 이것은 트랜잭션이 독립적으로 서로 투명하게 작동할 수 있게 합니다. 이 후에는 트랜잭션이 시작된 이후에 변경한 내용을 무시하려면 COMMIT를 사용하여 변경 내용을 디스크 또는 ROLLBACK에 저장해야 합니다. 다음은 MySQL 트랜잭션의 구현을 나타내는 예제입니다: 참고: LOCK TABLE은 트랜잭션이 안전하지 않으며 테이블을 잠그기 전에 활성 트랜잭션을 자동으로 커밋합니다.