이 문서의 예는 PHP가 MySQL 트랜잭션을 작동하는 방법을 설명하며 참고용으로 공유됩니다. 구체적인 방법은 다음과 같습니다.
일반적으로 거래에는 ACID 특성이 있어야 합니다. 일명 ACID는 Atomic(원자성), Consistency(일관성), Isolated(격리), Durable(지속성) 네 단어의 첫 글자를 따서 작성되었습니다. 그 의미를 설명하기 위해 "은행 송금"을 예로 들어 보겠습니다. :
① 원자성: 트랜잭션을 구성하는 문은 논리적 단위를 형성하며 그 중 일부만 실행될 수 없습니다. 즉, 거래는 분할할 수 없는 가장 작은 단위입니다. 예: 은행 송금 과정에서 한 계좌에서 이체 금액을 차감하고 동시에 다른 계좌에 추가해야 합니다. 하나의 계좌만 변경하는 것은 불합리합니다.
② 일관성(Consistency): 트랜잭션 처리 전, 후의 데이터베이스가 일관성을 갖는다. 즉, 트랜잭션은 시스템 상태를 올바르게 변환해야 합니다. 예: 은행 이체 프로세스 중에 이체 금액이 한 계좌에서 다른 계좌로 이체되거나 두 계좌가 모두 변경되지 않고 그대로 유지되며 다른 상황은 없습니다.
③ 격리성(Isolation): 하나의 트랜잭션이 다른 트랜잭션에 영향을 미치지 않습니다. 즉, 어떤 트랜잭션에서도 불완전한 상태의 트랜잭션을 보는 것은 불가능합니다. 예를 들어, 은행 송금 중 이체 거래가 제출되기 전에는 다른 이체 거래가 대기 상태에만 있을 수 있습니다.
④ 연속성: 거래 처리의 효과가 영구적으로 보존될 수 있습니다. 반대로 트랜잭션은 서버, 프로세스, 통신, 미디어 오류 등을 포함한 모든 오류를 견딜 수 있어야 합니다. 예: 은행 이체 과정에서 이체 후 계좌 상태를 저장해야 합니다.
PHP에서 mysqli는 mysql 트랜잭션과 관련된 작업을 잘 캡슐화했습니다. 아래 예:
참고:
MyISAM: 트랜잭션을 지원하지 않으며 성능 향상을 위해 읽기 전용 프로그램에 사용됩니다
InnoDB: ACID 트랜잭션, 행 수준 잠금 및 동시성을 지원합니다
Berkeley DB: 트랜잭션 지원
이 기사가 모든 사람의 PHP MySQL 데이터베이스 프로그래밍에 도움이 되기를 바랍니다.