원글: https://gall.dcinside.com/m/backend/3279
sql 댓글 안써져서 새글로
mysql 기준
와 정성 감사합니다...ㅜㅜ한번 참고해서 적용해볼게요
개추
정성추
근데 궁금한 게 있는데 저렇게 매번 예약이 들어올 때마다 테이블을 정렬해야 되는 연산을 하면 성능 상으로 문제는 없음? 복합키에 seq가 들어가서 상관 없으려나?
인덱스 타야지 ㅇㅇ 본문엔 seq이 먼저 나오긴했는데 pk를 room id랑 seq 순서로 두면 아마 클러스터드 인덱스 선에서 처리 가능할거임.
(room_id, seq, user_id) 유니크 키로 잡고 별도로 reservation_id 컬럼 만들어서 pk로 하는게 좋을듯
아니 (room_id, user_id) 유니크 키로 잡고 (room_id, seq) 인덱스 걸든지 해야될듯
집와서 보니까 pk로 room id랑 user id가 아니라 seq으로 둔거구나. 근데 그러면 user가 중복 예약이 될 수도 있지 않나?
user_id를 왜 빼도 된다고 생각한거지..
혹시 근데 저 쿼리만 그대로 실행하면 만약 여러 스레드가 동시에 쿼리를 실행하려할 때, 즉 트랜잭션 1, 2가 next seq을 같은 값으로 읽게 된 경우 회원 id가 다르기 때문에 중복키가 아니라고 판단하게 될 수도 있지 않아?
mysql 기준
와 정성 감사합니다...ㅜㅜ한번 참고해서 적용해볼게요
개추
정성추
근데 궁금한 게 있는데 저렇게 매번 예약이 들어올 때마다 테이블을 정렬해야 되는 연산을 하면 성능 상으로 문제는 없음? 복합키에 seq가 들어가서 상관 없으려나?
인덱스 타야지 ㅇㅇ 본문엔 seq이 먼저 나오긴했는데 pk를 room id랑 seq 순서로 두면 아마 클러스터드 인덱스 선에서 처리 가능할거임.
(room_id, seq, user_id) 유니크 키로 잡고 별도로 reservation_id 컬럼 만들어서 pk로 하는게 좋을듯
아니 (room_id, user_id) 유니크 키로 잡고 (room_id, seq) 인덱스 걸든지 해야될듯
집와서 보니까 pk로 room id랑 user id가 아니라 seq으로 둔거구나. 근데 그러면 user가 중복 예약이 될 수도 있지 않나?
user_id를 왜 빼도 된다고 생각한거지..
혹시 근데 저 쿼리만 그대로 실행하면 만약 여러 스레드가 동시에 쿼리를 실행하려할 때, 즉 트랜잭션 1, 2가 next seq을 같은 값으로 읽게 된 경우 회원 id가 다르기 때문에 중복키가 아니라고 판단하게 될 수도 있지 않아?