CI 묻고 답하기

제목 트랜잭션 록 문제
글쓴이 kaido 작성시각 2014/10/30 17:20:49
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 12253   RSS
트랜잭션 처리에 대한 질문입니다.

사실 작년에 봤던 문제였는데 지금까지 놔두고 물어보질 못했네요.

갑자기 떠올라서 질문 합니다.


CI 트랜잭션 처리의 경우 이런 문제를 보았습니다.

트랜잭션 시작 !!

처리중...

트랜잭션 엔드 !!

위 방식대로 처리가 됩니다만...

트랜잭션 시작 !!

처리중... 페이지 에러 발생!!

트랜잭션 엔드 !!  록을 풀어주지 못함

이런 문제가 생기더군요.

어떤 연유로 트랜잭션 시작을 하고 나서 DB가 죽는다거나 페이지 에러가 발생 하면
트랜잭션 엔드 처리해 주기전에 뻗어버려서 DB는 그대로 록을 물고 있는 현상 입니다.

약간 특수한 경우긴 합니다만 간혈적으로 나타나는 현상 입니다.


페이지 에러시에 자동으로 트랜잭션 록을 풀어주는 형태로 해결 방법이 있을까요?
 다음글 controller에서 데이터 값 설정해줄때 배열 질문... (1)
 이전글 URL에서 컨트롤러, 메서드를 빼고 싶습니다. (1)

댓글

들국화 / 2014/10/30 17:32:40 / 추천 0
$this->db->trans_complete(); 해도 안끊어 지는건가요?
kaido / 2014/10/30 17:38:15 / 추천 0
$this->db->trans_complete();
불러오기 전에 페이지가 죽은 걸로 보입니다.
그래서 록을 물고 있구요.
들국화 / 2014/10/30 17:46:12 / 추천 0
확실하지는 않치만...

$this->db->trans_off(); 하고 나서 
$this->db->trans_start() 를 호출해 보세요.
kaido / 2014/10/30 17:50:07 / 추천 0
음.. 기억이 맞다면 안됩니다.

트랜잭션 스타트를 하면 mysql 에 pid 가 별도로 생성 되는 구조라서..

프로세스 확인 해보면 여러개 생성되어 있습니다.

아무래도 mysql이 프로세스 관리를 못하는 문제가 아닐지도 싶네요 ㅜㅜ

mssql 쪽에선 록온된 프로세스를 관리 하는걸로...
asp&mssql 쪽이 트랜잭션 록온 된채로 페이지 죽을 가능성이 훨씬 높은데도 여태 이슈가 된걸 본적이 없는걸 보면...
들국화 / 2014/10/30 17:59:03 / 추천 0
kaido// 저는 롤백이 된적은 많은데... 록킹이 된체로 디비 접근이 안되는 문제는 없엇던것 같네요.

set innodb_lock_wait_timeout = 5000; 을 좀 낮춰주면 되지 않을까 합니다.
kaido / 2014/10/30 18:09:56 / 추천 0
넵. 참고하겠습니다.