在MySQL进程列表中,它显示了一些SELECT查询已被锁定。放映时间超过4000

|   24 | user | localhost | database | Query   | 4725 | Locked   | SELECT * FROM data
|   25 | user | localhost | database | Query   | 4725 | Locked   | SELECT * FROM data
|   26 | user | localhost | database | Query   | 4725 | Locked   | SELECT * FROM data


PHP脚本已执行了几次,但随后SELECT处于锁定状态。如何解决这个问题呢?

$SQL = "SELECT * FROM data";
$query = $db->prepare($SQL);
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    //Do something
    sleep(2);
}


mySQL服务器是否限制SELECT查询一次只能运行一次?可以改变吗?

最佳答案

您应该运行show engine innodb status \G来查看哪些查询正在持有该锁。

在评论中讨论了这一点并听到MyISAM已在使用中,并且有很多写文章后,我建议您迁移到InnoDB。

InnoDB作为默认引擎已有一段时间了,通常情况下会更好。在这种情况下,您将获得基于行的锁定。 InnoDB的开发远超过MyISAM。

08-18 14:34
查看更多