데이터베이스 트랜잭션은 완전히 실행되거나 전혀 실행되지 않는 단일 논리적 작업 단위로 수행되는 일련의 작업을 의미합니다. 간단히 말해서 트랜잭션은 동시성 제어 단위이자 사용자가 정의한 작업 순서입니다.
슈퍼마켓에 가서 물건을 사고 100위안을 슈퍼마켓으로 이체할 때 Alipay를 사용합니다. 실제로 이는 2단계 과정입니다.
첫 번째 단계는 지갑에서 100을 빼는 것입니다.
두 번째 단계는 슈퍼마켓의 Alipay 계정에 100위안을 추가하는 것이며 거래가 완료됩니다.
그러나 첫 번째 단계가 완료되었지만 두 번째 단계가 실행되지 않으면 어떻게 될까요? 정전되면 어떻게 되나요?
이런 일이 발생합니다. 귀하의 계좌는 100위안 감소했지만 슈퍼마켓 계좌의 금액은 변경되지 않았습니다. 문제가 발생하지 않으며 싸울 필요가 없습니다.
이러한 데이터 일관성 문제를 해결하기 위해 데이터베이스 트랜잭션이 탄생했습니다.
트랜잭션은 완전히 또는 전혀 단일 논리적 작업 단위로 수행되는 일련의 작업을 의미합니다. 간단히 말해서 트랜잭션은 동시성 제어 단위이자 사용자가 정의한 작업 순서입니다.
데이터 일관성을 유지하기 위한 데이터베이스의 단위입니다. 데이터베이스를 일관된 상태에서 새로운 일관된 상태로 변경합니다. 쉽게 말하면 일련의 처리 단계가 모두 발생하거나 모든 단계가 실행되지 않는 경우입니다. 우리는 처리 세트를 호출합니다. 단계는 트랜잭션입니다. 이를 통해 데이터의 무결성과 신뢰성을 손상시키지 않고 데이터가 항상 일관된 상태를 유지할 수 있습니다. 트랜잭션이 실행된 후 DBMS는 데이터베이스에 있는 데이터의 일관성을 자동으로 확인합니다.
트랜잭션에는 원자성, 일관성, 격리성, 내구성이라는 4가지 특성이 있습니다. 이 4가지 특성을 일반적으로 ACID라고 합니다.
1. 원자성
트랜잭션은 완전한 작업입니다. 트랜잭션의 요소는 분할할 수 없습니다(원자적). 트랜잭션의 모든 요소는 전체적으로 커밋되거나 롤백되어야 합니다. 트랜잭션의 요소 하나라도 실패하면 전체 트랜잭션이 실패합니다.
은행 송금 거래를 예로 들어보겠습니다. 거래가 제출되면 두 계좌의 데이터가 업데이트됩니다. 어떤 이유로 두 계정을 성공적으로 업데이트하기 전에 트랜잭션이 종료되면 두 계정의 잔액이 업데이트되지 않고 계정 잔액에 대한 수정 사항이 취소되며 트랜잭션이 부분적으로 커밋될 수 없습니다.
2. 일관성
거래가 완료되면 데이터는 일관된 상태여야 합니다. 즉, 데이터베이스에 저장된 데이터는 트랜잭션이 시작되기 전에도 일관된 상태를 유지합니다. 진행 중인 트랜잭션 중에 데이터는 일관되지 않은 상태에 있을 수 있습니다. 예를 들어 데이터가 부분적으로 수정될 수 있습니다. 그러나 트랜잭션이 성공적으로 완료되면 데이터는 알려진 일관된 상태로 다시 반환되어야 합니다. 트랜잭션을 통해 데이터를 수정해도 데이터가 손상되거나 트랜잭션이 데이터 저장소를 불안정한 상태로 둘 수 없습니다.
은행 송금 거래를 예로 들어보세요. 거래가 시작되기 전에는 모든 계정 잔액의 총액이 일관된 상태를 유지합니다. 거래가 진행되는 동안 한 계정의 잔액은 줄어들지만 다른 계정의 잔액은 수정되지 않습니다. 따라서 모든 계정 잔액의 합계가 일치하지 않습니다. 거래가 완료된 후 총 계정 잔액은 다시 일관된 상태로 복원됩니다.
3. 격리
데이터를 수정하는 모든 동시 트랜잭션은 서로 격리됩니다. 이는 트랜잭션이 독립적이어야 하며 어떤 방식으로든 다른 트랜잭션에 의존하거나 영향을 주어서는 안 된다는 것을 나타냅니다. 데이터를 수정하는 트랜잭션은 동일한 데이터를 사용하는 다른 트랜잭션이 시작되기 전이나 동일한 데이터를 사용하는 다른 트랜잭션이 끝난 후에 데이터에 액세스할 수 있습니다.
또한 트랜잭션이 데이터를 수정할 때 다른 프로세스가 동시에 동일한 데이터를 사용하는 경우 트랜잭션이 성공적으로 커밋될 때까지 데이터 수정 사항이 적용되지 않습니다. Zhang San과 Li Si 간의 이동과 Wang Wu와 Zhao Er 간의 이동은 항상 서로 독립적입니다.
4. 내구성
트랜잭션의 내구성은 시스템 실패 여부에 관계없이 트랜잭션 결과가 영구적이라는 것을 의미합니다.
트랜잭션이 성공적으로 완료된 후 데이터베이스에 대한 변경 사항은 시스템이 실패하더라도 영구적입니다. 즉, 일단 트랜잭션이 커밋되면 트랜잭션으로 인한 데이터 변경 사항이 데이터베이스에 영구적으로 유지됩니다.
트랜잭션의 ACID 원칙은 트랜잭션이 성공적으로 제출되거나 실패하고 롤백되는 것을 보장합니다. 따라서 트랜잭션에 대한 수정 사항은 복구 가능합니다. 즉, 트랜잭션이 실패하면 데이터 수정 내용이 트랜잭션이 실행되기 전 상태로 복원됩니다.
위 내용은 데이터베이스 트랜잭션은 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!