> 데이터 베이스 > MySQL 튜토리얼 > SQL 트랜잭션 롤백 후에도 자동 증가 ID가 계속 증가하는 이유는 무엇입니까?

SQL 트랜잭션 롤백 후에도 자동 증가 ID가 계속 증가하는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-13 22:54:44
원래의
378명이 탐색했습니다.

Why Do Auto-Increment IDs Still Increase After a SQL Transaction Rollback?

트랜잭션 롤백 중 SQL 자동 증가 동작

트랜잭션 내에서 SQL 테이블에 데이터를 삽입할 때 기본 키 자동 증가와 관련된 일반적인 문제가 발생합니다. 오류로 인해 트랜잭션이 롤백되더라도 자동 증가 카운터는 계속 증가합니다.

문제:

이러한 불일치로 인해 기본 키 순서에 차이가 생겨 데이터 무결성과 순차 ID를 유지하기가 어려워질 수 있습니다. 문제는 Rollback() 메소드가 사용되지 않은 자동 증가 값을 복구할 수 있습니까?

설명:

답은 '아니오'입니다. 자동 증가 메커니즘은 트랜잭션과 독립적으로 작동합니다. 이 설계는 이전 트랜잭션이 완료되고 자동 증가 값이 해제될 때까지 기다리는 동안 후속 트랜잭션이 지연되는 차단을 방지합니다.

이 간단한 예를 고려해 보세요.

<code>User 1:
- Begins transaction
- Inserts into Table A
- Inserts into Table B
- Updates Table C
- Inserts into Table D
- Commits

User 2:
- Begins transaction
- Inserts into Table A
- Inserts into Table B
- Commits</code>
로그인 후 복사

사용자 2가 사용자 1 직후에 트랜잭션을 시작하는 경우 테이블 A에 대한 삽입은 사용 가능한 다음 자동 증가 값을 결정하기 전에 사용자 1의 전체 트랜잭션이 완료될 때까지 기다려야 합니다.

이 디자인을 선택한 이유

이러한 비트랜잭션 동작은 의도적인 것입니다. 잠재적인 트랜잭션 차단을 방지하여 시스템 효율성을 향상시킵니다. 성공적인 트랜잭션 완료 시 자동 증가 값만 할당하면 동시 삽입이 크게 방해되고 성능에 부정적인 영향을 미칠 수 있습니다.

권장 접근 방식:

순차적인 자동 증가 기본 키가 필요한 애플리케이션의 경우 대체 고유 식별자 생성 방법을 고려하세요.

위 내용은 SQL 트랜잭션 롤백 후에도 자동 증가 ID가 계속 증가하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿