작성
·
13
0
안녕하세요? 질문이 있습니다.
6분 20초쯤 "여러 데이터를 수정할 때는 발생하는 lock의 순서를 지켜주자" 라는 말을 이해하지 못했습니다.
좀 더 자세히 설명 가능하실까요?
트랜잭션 X에서는 A -> B 를 수정한다.
트랜잭션 Y에서는 B -> A 를 수정한다.
Deadlock 발생할 가능성이 있음은 이해했습니다.
여기서 lock의 순서를 지킨다는 것이 무슨 뜻일까요?
트랜잭션 Y도 A -> B 흐름으로 수정하도록 만들라는 뜻인가요?
그렇다면 이해는 되지만, 트랜잭션 Y가 B -> A 로만 수정해야하는 상황이라면 어떻게 해소해야 하는지 궁금합니다.
감사합니다 :)
답변 1
0
일단 Lock에 대한 부분은 일반적인 서비스를 개발하시는데에 있어서 큰 문제가 발생하지 않습니다.
그러기 떄문에 사실 실무에서도 이러한 Lock에 대한 제어를 신경쓰고 쿼리를 작성하지는 않습니다.
하지만 특수한 케이스에 대해서 Lock을 얻고 처리를 해야 하는 경우도 있습니다.
예를들면 모든 데이터 수정이 Atmoic하게 동작을 해야 하는 부분이 있는것이죠
예를들면 티켓팅 서비스 정도가 생각이 드네요
이렇게 Lock을 획득하고 제어를 해야 하는 상황에 대해서 표현을 하고 싶어서 저렇게 설명을 드렸는데 조금 혼동이 오실 수 있는 부분인거 같네요 ㅠㅠ 혼동을 드리게 되어서 죄송합니다.
Lock을 따로 제어하지 않는다면 일반적인 쿼리에 대해서 큰 문제없이 작성하셔도 됩니다. 그래서 막 심각하게 모든 부분을 고려하시지는 않아도 됩니다.
모든것은 MySQL의 옵티마이저에게 책임을 떠넘기기로 하죠 ㅎㅎ
어느정도 도움이 되셨을까요?? 질문 감사합니다 :)