1
내 코드,이 mysql 속도를 높이는 방법이 있습니까?
$dbc -> beginTransaction();
$dbc -> query("LOCK TABLES items WHERE id = " . $user['id'] . " WRITE");
$q = $dbc -> prepare("UPDATE items SET shrapnel = ?, bank = ? WHERE id = ?");
$q -> execute(array($user['shrapnel'] - $_POST['deposit'], $user['bank'] + $_POST['deposit'], $user['id']));
$dbc -> query("UNLOCK TABLES items WHERE id = " . $user['id'] . "");
$dbc -> commit();
매우 간단 정말, 테이블에 행을 읽거나 사용자의 값으로 쓸 수있는 다른 있는지 아무도하지 않습니다해야합니다. 뭔가 잘못되었을 때 다시 롤백해야합니다!
내가 명백한 롤백을하지 않고 무엇인가가 실패하면 변경 사항이 적용되지 않습니까?
그리고이 진술이 커밋되는 동안 다른 사용자가이 값을 읽거나 업데이트하여 완전한 재난을 피할 수있게하는 확실한 방법입니까?
나는 행 레벨 잠금을 지원하는 InnoDB를 사용하고있다.
감사합니다. 이 문서를 찾기가 어렵습니다! 감사! – cgwebprojects
더 나은 링크를 찾았습니다. 나는 대답의 링크를 변경했지만 여기있다. http://dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html –