내 웹 사이트에서 자동 증가 사용자 ID를 사용할 계획입니다. 사용자 데이터가 여러 테이블로 나뉘어지면서 나는 트랜잭션에서 자동 증분 값이 얼마나 신뢰할 수 있는지 궁금하다. 즉, 등록시 트랜잭션의 초기 값을 테이블에 삽입 할 때 자동 증분자가 ID를 모든 테이블에 저장하거나 하나의 테이블에 삽입하고 삽입 된 ID를 별도의 쿼리에 가져와 후속 삽입에 사용하면 사용자 생성을 위해 더 높은 데이터베이스로드가 발생합니다.트랜잭션에서 AUTO_INCREMENT의 신뢰성은 얼마나됩니까?
답변
자동 증가 필드는 사용자가 무언가를 삽입하려고 할 때마다 예약됩니다.
1 : 2 단계에서 삽입 어느 정도 진행 키 다음으로 사용 가능한 자동 증가
2 예약 : 트랜잭션이 롤백 경우, 지금이 예약 된 키
로 삽입을 수행을 유일한 롤백 할 수없는 자동 증가 예약은 자동 증가 열의 갭을 초래합니다. 이 때문에 자동 증가가 100 %가 될 것이라고 예측하려고한다면 그렇게 할 수 없습니다. 내가 아는 auto_increment에는 다른 문제가 없으며, 거의 모든 경우에 수동으로 작업을 수행하는 것보다 mysql의 기능에 의존하는 것이 더 신뢰할 수 있습니다.
동시 트랜잭션이없는 것처럼 매우 제한적인 조건으로 삽입이 수행되고 롤백 된 내용이없는 경우 안전 할 수 있습니다. 그렇지 않은 경우, 사용중인 스토리지 엔진에 따라 응답이 달라질 수 있습니다. auto_increment
을 입력하면 번호 매기기의 간격이 least if you are using InnoDB이됩니다.
더 일반적으로 내가 아는 모든 DB는 auto_increment
(또는 이와 동등한) 값의 차이가 발생할 수 있습니다. 그 이유는 그렇지 않은 경우 새 행을 삽입하는 트랜잭션은 해당 테이블에 대한 다른 모든 삽입을 차단해야하기 때문입니다. 이는 첫 번째 트랜잭션이 아직 커밋되거나 롤백되지 않은 경우 다음 값이 무엇인지 알 수 없을 때 두 번째 행을 삽입 할 수 없기 때문입니다. 갭을 허용하면 첫 번째 트랜잭션이 커밋 될 것이라고 가정하고, 롤백이 발생하면 갭이 있지만 문제는 아닙니다.
사용자 생성 작업에 대한 걱정거리가 많은 경우이 기능을 저장 프로 시저로 구현하여보다 능숙하게 만들 수 있습니다. 이 방법을 사용하면 각 쿼리에 대해 응용 프로그램으로 라운드 트립 할 필요가 없습니다.
간격은 결코 문제가되지 않습니다. –
@ ÁlvaroG.Vicario : 어떤 숫자가 생성되었는지 예측하려고하는 경우 그 질문이 무엇인지 예상 할 수 있습니다. –
- 1. 는 AUTO_INCREMENT의 재 배열
- 2. JRuby의 신뢰성은 어느 정도입니까?
- 3. window.location.hostname의 신뢰성은 어느 정도입니까?
- 4. current_kernel_time()의 신뢰성은 어느 정도입니까?
- 5. JMS 롤백의 신뢰성은 어느 정도입니까?
- 6. ">"의 신뢰성은 어느 정도입니까?
- 7. LAN상의 UDP 멀티 캐스트의 신뢰성은 무엇입니까?
- 8. 유닉스 도메인 소켓의 신뢰성은 어느 정도입니까?
- 9. UDP 체크섬 알고리즘의 신뢰성은 어느 정도입니까?
- 10. [CALayer animationForKey :]의 신뢰성은 어느 정도입니까?
- 11. GCC에서 wchar_t의 크기는 얼마나됩니까?
- 12. ActionMailer의 효율성은 얼마나됩니까?
- 13. Guice 3.0의 안정도는 얼마나됩니까
- 14. UITableViewCell 사이의 간격은 얼마나됩니까?
- 15. HttpRuntime.Cache의 스케일은 얼마나됩니까?
- 16. 시각적으로 긴 문자열은 얼마나됩니까?
- 17. 내가 가지고있는 시간은 얼마나됩니까?
- 18. 다음 진술의 복잡성은 얼마나됩니까?
- 19. jQuery는 서버의 부담이 얼마나됩니까?
- 20. 내 솔루션의 복잡성은 얼마나됩니까?
- 21. QElapsedTimer의 지속 시간은 얼마나됩니까?
- 22. CSS 값의 크기는 얼마나됩니까?
- 23. cloud9 프로젝트의 수명은 얼마나됩니까?
- 24. 문서 참조의 크기는 얼마나됩니까?
- 25. NSCalendarUnitEra의 기간은 얼마나됩니까?
- 26. 평균적인 방법의 크기는 얼마나됩니까?
- 27. 다음의 저장 공간은 얼마나됩니까?
- 28. H2 데이터베이스의 크기는 얼마나됩니까?
- 29. WebMatrix의 효율성은 얼마나됩니까?
- 30. MySqlBulkLoader With MySqlCommand 트랜잭션에서
"신뢰할 수있는"을 정의하십시오. 중복 된 기본 키를 삽입하는 것은 물리적으로 불가능하지만 다중 문 대신 매우 신중한 테이블 잠금이 필요합니다. –
자동 증가 ID의 가장 큰 문제점은 여러 환경이 있고 동일한 값의 행에 대해 ID를 동기화해야하는 경우입니다. 조회 테이블처럼. 그렇지 않으면 일반적으로 잘 작동합니다. – xQbert