从PHP中选择数据时,MySQL表被锁定了多长时间?

时间:2012-09-03 12:48:41

标签: php mysql database locking

我目前正在玩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”中删除?

谢谢你, EMI

2 个答案:

答案 0 :(得分:3)

在您的阅读查询结束时释放锁定:

$result = mysql_query($qry, $dbConnection);

因为您正在进行每个查询事务。

如果您想进行更复杂的交易,请确保使用innodb引擎并开始交易:

mysql_query("START TRANSACTION", $dbConnection)
mysql_query("BEGIN", $dbConnection);

然后做你的工作:

  • 例如读表
  • 然后写一些值等

并提交或回滚事务:

mysql_query("COMMIT", $dbConnection);
mysql_query("ROLLBACK", $dbConnection);

取决于您是否希望更改通过。

答案 1 :(得分:0)

它被锁定,直到读取了所有你选择的内容,具体取决于表引擎锁定范围从整个表到行的输入。

检查innoDB是否在行锁级别