我目前正在玩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
答案 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是否在行锁级别