본문 바로가기

Backend Develop/Mysql

버전번호를 이용한 Optimistic locking in MySQL / 낙관적인 잠금

PHP를 이용해서 프로그램을 작성하다보면, 동시성을 확보해야할 경우가 발생한다.

이때 내가 생각해낸것은 Mysql  InnoDB의 트랜젝션을 이용한 Rock이다

그러나 Rock을 걸었을때 A, B가 있다고 했을때 A의 Rock이 풀리지 않은 상태에서는 B의 흐름의 적채 현상이 발생한다. 


빈번히 발생되어지는 Query에서 적채현상이 발생하면 안되므로 


버전번호를 이용한 Optimistic locking(낙관적인 잠금)을 사용해보기로 했다...



SELECT ID, val1, val2, version 

FROM theTable

WHERE ID= @theId;


UPDATE theTable SET 

val1 = @newVal1, 

val2 = @newVal2,

version = version + 1

WHERE 

ID = @theId AND 

version = @oldversion;



if(mysql_affected_rows() == 0) {

no update To Do;

}

else {

update To Do;

}



6개월동안 고민해오던것이 한방에 해결되었다..

공부해야한다.


'Backend Develop > Mysql' 카테고리의 다른 글

pgSql Data Directory 옮기기  (0) 2021.08.29
Mysql 대량의 데이타 삭제  (0) 2019.02.14