InnoDB 스토리지 엔진과 트랜잭션과 함께 MySQL을 사용하고 있으며 문제가 발생했습니다 : MySQL에서 Oracle의 SEQUENCE를 에뮬레이트하는 좋은 방법이 필요합니다. 요구 사항은 다음과 같습니다 - 동시성 지원 - 트랜잭션 안전 - 값 중 일부는 사용하지 않을 경우 최대 성능 (의미 최소화 잠금 및 교착 상태)MySQL에서 트랜잭션 안전 시퀀스 에뮬레이트
우리는 순서 즉 간격이 확인되어, 상관 없어. 카운터를 사용하여 별도의 InnoDB 테이블을 생성하여 쉽게 달성 할 수있는 방법이 있지만 트랜잭션에 참여하고 잠금과 대기를 도입한다는 의미입니다. 수동 잠금, 다른 아이디어 또는 베스트 프랙티스로 MyISAM 테이블을 시험해보고 싶습니다.
감사합니다. 거의 모든 일을 처리 한 결과가 거의 정확합니다. –
레코드가없는 경우이 쿼리를 사용하십시오. INSERT INTO sequence (seq_name, seq_current) VALUES ('foo', (@next : = 1)) 이중 키 ON 업데이트 seq_current = (@next : = seq_current + 1); 그러면 SELECT @next;를 호출한다. – iwat
당신이 qu1j0t3의 대답 iwat의 의견을 결합 할 수 있습니다 : 'sequences2 (seq_name, seq_current) 값으로 INSERT ('foo는'LAST_INSERT_ID (1)) DUPLICATE KEY UPDATE seq_current = LAST_INSERT_ID ON (seq_current + 1);' 'SELECT LAST_INSERT_ID();'를 호출하거나 응용 프로그램 드라이버를 사용하는 경우 내장 자동 증가 호출을 사용하십시오 (예 : jdbc의'Statement # getGeneratedKeys') – Alden