Mysql은 제가 알기로.. table lock을 하는것으로 알고 있습니다.
이 문제 때문에... 동시 사용자가 많은 Web에서는 문제가
있다고 생각했습니다만.. 어쩔 수 없이 Mysql을 쓰게 되었네여..
-_-;
현재 프로젝트 완료시점에서 문제가 생긴것은 바로 table lock
문제입니다.
제가 간과한 점이.. Mysql이 Read Lock을 수행한다는 점이었습니다.
이 때문에... 최대한 Insert/Update/Delete를 억제하고...
될 수 있으면... 같은 table에서 동시에 일어나지 않도록 설계한
저의 노력이 물거품이 되어버렸습니다... -_-;
그런데... 상식적으로 생각할 때... 한 프로세스가 database의
특정 table을 잡고 있어.. lock이 걸려있을 때.. 다른 프로세스가
특정 table에 접근하려고 하면.. 기다려야 하는데...
Mysql C api의 경우... mysql_query()가 에러를 내고 그냥
return해 버리는군요...
그래서... table에 lock이 걸려있을 때.. 접근한 프로세스에서
database에 접근을 하려고 할 때... lock이 해제될때가지
기다리던지.. 아니면 특정시간 이후에 retry를 하던지..
하여간.. 그렇게 mysql을 tuning할 수 있는지 알고 싶습니다.
자료를 잘 찾아보았는데... 못 찾겠더군요..
lock에 관한 자료들은 여러곳에서 찾아보았었는데...
기본적인 내용들이라.. 저에게는 별로 도움이 되지 않았습니다.
참고로... 가능한 Update는 한꺼번에 해라... 라는 식의 해결책은
사실 해결책이라고 볼 수 없습니다... 저에게 있어서...
아뭏든... 고수님들의 답변 기다리고 있겠습니다.
|