我目前正在尝试MySQL和PHP,我想知道表锁的问题。从MySQL文档中我了解到,MySQL应用了表范围的读锁定,这会导致其他查询等待select查询完成。
当我使用PHP查询数据时,如下例所示:
$dbConnection = mysql_connect($dbHost, $dbUser, $dbPass)
mysql_select_db($dbName, $dbConnection)
$qry = "select * from bigTable";
$result = mysql_query($qry, $dbConnection);
//Read Data
mysql_close($dbConnection);从PHP代码的角度来看,读锁何时会从"bigTable“中移除?
谢谢你,艾米
发布于 2012-09-03 20:49:36
锁在读查询结束时释放:
$result = mysql_query($qry, $dbConnection);因为您正在执行每个查询的事务。
如果您想进行更复杂的事务,请确保使用innodb引擎并启动您的事务:
mysql_query("START TRANSACTION", $dbConnection)
mysql_query("BEGIN", $dbConnection);然后做好你的工作:
例如,
并提交或回滚事务:
mysql_query("COMMIT", $dbConnection);
mysql_query("ROLLBACK", $dbConnection);这取决于您是否希望进行更改。
发布于 2012-09-03 20:50:31
它将被锁定,直到您选择的所有内容都被读取为止,具体取决于表引擎,锁的范围从整个表到行条目。
检查innoDB,它处于行锁级别
https://stackoverflow.com/questions/12248219
复制相似问题