read committed select for update 레코드 존재 = 11, 13 between 10 and 15 인 경우 10<= <=15에 해당되는 레코드 락 = 11,13만 잠금 등호조건=11인 경우에도 레코드 락 = 11 잠금 레코드 락 걸리니깐 다른 트랜잭션이 새로운 행 11,13 삽입 불가능하고 대기 12는 허용 맞음??
repeatable read가 아니라?
이번은 리드커밋 기준 - dc App
갭 락이 없으니까 11 13만 잠그고 나머지는 허용
새로운 11삽입은? - dc App
@딘퐁 삽입 가능하구나 레코드 락은 결국 레코드 자체에만 잠금을 획득하니까 / PK인 상황에 대해서만 생각했었는데 PK아닌 경우는 생각을 못했네 오늘도 또 하나 얻고 간다
삽입되는게 맞네 11 자체를 막는게 아니라 존재했둔 레코드만 막구나 - dc App
@딘퐁 유일성이 있는 게 아니라면 기존 11과는 별개의 존재가 삽입되니까 그렇군 / 11 자체를 막는 것 << 이 조건을 만족하는 경우에 대한 거니까 이것도 결국 갭락에 속하는 것이고
repeatable read가 아니라서 다 가능
레코드락이 인덱스에 걸리는데 11삽입됨? - dc App
인덱스있으면 달라지지
아니다 인덱스 있어도 삽입되겠다
갭락이 없으니깐 다 삽입되지. 인덱스 있어도 실제로 없는 레코드는 락을 못걸잖아
나도 잘 몰라서 틀린거 있으면 알려줘 ㅋㅋㅋ
11 레코드는 이미 있는데 11레코드를 하나 더 넣는 상황이야 PK아님 세컨더리임 - dc App
@딘퐁 커밋된것만 읽기 가능이라 insert 쌉가능 인덱스 있던 없던 어차피 갭락이 없어서