>  기사  >  데이터 베이스  >  mysql에 트랜잭션이 있나요?

mysql에 트랜잭션이 있나요?

青灯夜游
青灯夜游원래의
2020-10-20 16:35:502443검색

mysql에는 트랜잭션이 있지만 Innodb 데이터베이스 엔진을 사용하는 데이터베이스나 테이블만 트랜잭션을 지원합니다. 트랜잭션 처리는 데이터베이스의 무결성을 유지하는 데 사용될 수 있습니다. 이는 모든 명령과 함께 시스템에 작업 요청을 제출하거나 취소합니다. 즉, 이 데이터베이스 명령 집합이 실행되거나 실행되지 않습니다.

mysql에 트랜잭션이 있나요?

(추천 튜토리얼: mysql 비디오 튜토리얼)

데이터베이스 트랜잭션(Transaction)은 일련의 데이터베이스 작업 명령을 포함하는 메커니즘, 작업 순서입니다. 트랜잭션은 모든 명령 전체와 함께 시스템에 작업 요청을 제출하거나 취소합니다. 즉, 이 데이터베이스 명령 집합은 실행되거나 실행되지 않으므로 트랜잭션은 분할할 수 없는 논리적 작업 단위입니다.

데이터베이스 시스템에서 동시 작업을 수행할 때 트랜잭션은 가장 작은 제어 단위로 사용되며, 이는 특히 여러 사용자가 동시에 운영하는 데이터베이스 시스템에 적합합니다. 예를 들어 항공사 예약 시스템, 은행, 보험 회사, 증권 거래 시스템 등이 있습니다.

  • MySQL에서는 Innodb 데이터베이스 엔진을 사용하는 데이터베이스나 테이블만 트랜잭션을 지원합니다.

  • 트랜잭션 처리를 사용하여 데이터베이스의 무결성을 유지하고 SQL 문 일괄 처리가 모두 실행되거나 전혀 실행되지 않도록 할 수 있습니다.

  • 트랜잭션은 삽입, 업데이트, 삭제 문을 관리하는 데 사용됩니다.

트랜잭션에는 원자성, 일관성, 격리성, 내구성이라는 4가지 특성이 있습니다. 이 4가지 속성을 흔히 ACID라고 합니다.

1. 원자성

트랜잭션은 완전한 작업입니다. 트랜잭션의 요소는 분할할 수 없습니다(원자적). 트랜잭션의 모든 요소는 전체적으로 커밋되거나 롤백되어야 합니다. 트랜잭션의 요소 하나라도 실패하면 전체 트랜잭션이 실패합니다.

은행 송금 거래를 예로 들어보겠습니다. 거래가 제출되면 두 계좌의 데이터가 업데이트됩니다. 어떤 이유로 두 계정을 성공적으로 업데이트하기 전에 트랜잭션이 종료되면 두 계정의 잔액이 업데이트되지 않고 계정 잔액에 대한 수정 사항이 취소되며 트랜잭션이 부분적으로 커밋될 수 없습니다.

2. 일관성

거래가 완료되면 데이터는 일관된 상태여야 합니다. 즉, 데이터베이스에 저장된 데이터는 트랜잭션이 시작되기 전에도 일관된 상태를 유지합니다. 진행 중인 트랜잭션 중에 데이터는 일관되지 않은 상태에 있을 수 있습니다. 예를 들어 데이터가 부분적으로 수정될 수 있습니다. 그러나 트랜잭션이 성공적으로 완료되면 데이터는 알려진 일관된 상태로 다시 반환되어야 합니다. 트랜잭션을 통해 데이터를 수정해도 데이터가 손상되거나 트랜잭션이 데이터 저장소를 불안정한 상태로 둘 수 없습니다.

은행 송금 거래를 예로 들어보세요. 거래가 시작되기 전에는 모든 계정 잔액의 총액이 일관된 상태를 유지합니다. 거래가 진행되는 동안 한 계정의 잔액은 줄어들지만 다른 계정의 잔액은 수정되지 않습니다. 따라서 모든 계정 잔액의 합계가 일치하지 않습니다. 거래가 완료된 후 총 계정 잔액은 다시 일관된 상태로 복원됩니다.

3. 격리

데이터를 수정하는 모든 동시 트랜잭션은 서로 격리됩니다. 이는 트랜잭션이 독립적이어야 하며 어떤 방식으로든 다른 트랜잭션에 의존하거나 영향을 주어서는 안 된다는 것을 나타냅니다. 데이터를 수정하는 트랜잭션은 동일한 데이터를 사용하는 다른 트랜잭션이 시작되기 전이나 동일한 데이터를 사용하는 다른 트랜잭션이 끝난 후에 데이터에 액세스할 수 있습니다.

또한 트랜잭션이 데이터를 수정할 때 다른 프로세스가 동시에 동일한 데이터를 사용하는 경우 트랜잭션이 성공적으로 커밋될 때까지 데이터 수정 사항이 적용되지 않습니다. Zhang San과 Li Si 간의 이동과 Wang Wu와 Zhao Er 간의 이동은 항상 서로 독립적입니다.

4. 내구성

트랜잭션의 내구성은 시스템 실패 여부에 관계없이 트랜잭션 결과가 영구적이라는 것을 의미합니다.

트랜잭션이 성공적으로 완료된 후 데이터베이스에 대한 변경 사항은 시스템이 실패하더라도 영구적입니다. 즉, 일단 트랜잭션이 커밋되면 트랜잭션으로 인한 데이터 변경 사항이 데이터베이스에 영구적으로 유지됩니다.

트랜잭션의 ACID 원칙은 트랜잭션이 성공적으로 제출되거나 실패하고 롤백되는 것을 보장합니다. 따라서 트랜잭션에 대한 수정 사항은 복구 가능합니다. 즉, 트랜잭션이 실패하면 데이터 수정 내용이 트랜잭션이 실행되기 전 상태로 복원됩니다.

위 내용은 mysql에 트랜잭션이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.