我目前正在使用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代码的角度来看,read锁是否会从“bigtable”中移除?
谢谢您,
电磁干扰
最佳答案
在读取查询结束时释放锁:
$result = mysql_query($qry, $dbConnection);
因为您正在执行每个查询事务。
如果要执行更复杂的事务,请确保使用innodb引擎并启动事务:
mysql_query("START TRANSACTION", $dbConnection)
mysql_query("BEGIN", $dbConnection);
然后做你的工作:
例如读取表
然后写一些值等。
提交或回滚事务:
mysql_query("COMMIT", $dbConnection);
mysql_query("ROLLBACK", $dbConnection);
这取决于您是否希望进行更改。
关于php - 从php选择数据时,MySQL表被锁定多长时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12248219/