포인트 데드락 정보
포인트 데드락- xperia-query 이름으로 검색
- 조회 35
- 댓글 1
본문
포인트 데드락이 발생하는데요
댓글에도 , 로그인에도 데드락이 가끔씩 생깁니다. 모든 mysql reporting 을 켜고 스텍트레이스를 추가하고 로그를 포착했습니다. insert_use_point 함수에서 발생합니다.
insert_use_point 함수내에 select 쿼리가있는데요 여기 FOR UPDATE 구문을 두어 락을 걸고 이 쿼리 아래 업데이트 쿼리들이 데드락에 빠지지않게 하는것이 필요합니다..
$sql = " select po_id, po_point, po_use_point
from {$g5['point_table']}
where mb_id = '$mb_id'
and po_id <> '$po_id'
and po_expired = '0'
and po_point > po_use_point
$sql_order
// FOR UPDATE 구문 추가필요.
";
$result = sql_query($sql);
트렌젝션을 써야하지만 그누보드는 MyIsam 지원으로 인해 트랜젝션을 추가할수없으니... FOR UPDATE 라도 추가하는것을 검토부탁드립니다
트렌젝션이 없으니 데드락이후 포인트들이 꼬이고있습니다.
추천
0
0
관련링크
댓글 1개
안녕하세요. SIR 입니다.
그누보드를 사용하는 많은 사람들이 MyIsam 환경의 mysql 을 사용하고 있어서, FOR UPDATE 는 추가할수 없습니다.
insert_use_point_before 이름의 hook 을 추가해 놓을테니, 적절히 사용해 주세요.
https://github.com/gnuboard/gnuboard5/commit/a9eab8d86ae0ce0805cfdb786ad2f1e33f3a80ac
90레벨 이상 댓글을 남길 수 있습니다.