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 –