在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。