혹시 충돌같은 거 생기지 않을까요? 자동으로 결정될까요? 정보
혹시 충돌같은 거 생기지 않을까요? 자동으로 결정될까요?
본문
innodb 테이블에서 auto_increment 컬럼이 primary 키로 지정되어 있을 경우,
insert 문을 하나의 트랜잭션으로 실행한다면 말입니다.....
commit가 끝나기도 전에 그 테이블에서 다른 사용자가 insert를 시도할 경우에
진행중인 트랜잭션의 auto_increment 을 고려해서 key 값이 자동으로 결정될까요?
혹시 충돌이나 그런 건 생기지 않을까요?
여러분의 의견은 어떠세요?
오라클의 myism에서는 중복되지 않는 걸로 알고 있는데요.....




insert 문을 하나의 트랜잭션으로 실행한다면 말입니다.....
commit가 끝나기도 전에 그 테이블에서 다른 사용자가 insert를 시도할 경우에
진행중인 트랜잭션의 auto_increment 을 고려해서 key 값이 자동으로 결정될까요?
혹시 충돌이나 그런 건 생기지 않을까요?
여러분의 의견은 어떠세요?
오라클의 myism에서는 중복되지 않는 걸로 알고 있는데요.....




댓글 전체

아마 문제 없을 거라고 생각합니다.
사실 DB관리 프로세스가 없는 일반 ISAM 방식의 DB에서는 키중복 에러가 종종 발생합니다.
동시에 INSERT 할때 이것을 콘트롤할 수 있는 프로세스가 없기 때문입니다.
그래서 이런 파일db 에서는 가끔식 auto_increment 로 유니크한 값을 잡지 않고 날짜시간분&천분의일초..(200906181555001...) 같은 값으로 처리하는 경우도 있습니다..
그러나 오라클, mySQL 처럼 서버용 DB에서는 바로 이 DB가 이런것을 컨트롤해 줍니다.
즉 동시에 들어오면 너가 먼저 앞번호 가지고, 너는 두번째 번호를 가져라... 이런 식이지요...
확실한 것은 아니지만 경험상 그럴거라고 생각한 것입니다...^^
사실 DB관리 프로세스가 없는 일반 ISAM 방식의 DB에서는 키중복 에러가 종종 발생합니다.
동시에 INSERT 할때 이것을 콘트롤할 수 있는 프로세스가 없기 때문입니다.
그래서 이런 파일db 에서는 가끔식 auto_increment 로 유니크한 값을 잡지 않고 날짜시간분&천분의일초..(200906181555001...) 같은 값으로 처리하는 경우도 있습니다..
그러나 오라클, mySQL 처럼 서버용 DB에서는 바로 이 DB가 이런것을 컨트롤해 줍니다.
즉 동시에 들어오면 너가 먼저 앞번호 가지고, 너는 두번째 번호를 가져라... 이런 식이지요...
확실한 것은 아니지만 경험상 그럴거라고 생각한 것입니다...^^