首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从php中选择数据时,MySQL表被锁定多长时间?

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

Stack Overflow用户
提问于 2012-09-03 20:48:41
回答 2查看 230关注 0票数 1

我目前正在尝试MySQL和PHP,我想知道表锁的问题。从MySQL文档中我了解到,MySQL应用了表范围的读锁定,这会导致其他查询等待select查询完成。

当我使用PHP查询数据时,如下例所示:

代码语言:javascript
复制
$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“中移除?

谢谢你,艾米

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-03 20:49:36

锁在读查询结束时释放:

代码语言:javascript
复制
$result = mysql_query($qry, $dbConnection);

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

如果您想进行更复杂的事务,请确保使用innodb引擎并启动您的事务:

代码语言:javascript
复制
mysql_query("START TRANSACTION", $dbConnection)
mysql_query("BEGIN", $dbConnection);

然后做好你的工作:

例如,

  • 读取表
  • ,然后写入一些值,等等。

并提交或回滚事务:

代码语言:javascript
复制
mysql_query("COMMIT", $dbConnection);
mysql_query("ROLLBACK", $dbConnection);

这取决于您是否希望进行更改。

票数 3
EN

Stack Overflow用户

发布于 2012-09-03 20:50:31

它将被锁定,直到您选择的所有内容都被读取为止,具体取决于表引擎,锁的范围从整个表到行条目。

检查innoDB,它处于行锁级别

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12248219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档