基本上我需要对大数据集进行操作,所以我开始认为我可以使用 mysql_unbuffered_query 不将所有结果加载到 RAM 中。
但是我读到,当我获取行时,我无法在同一张表上运行任何其他查询。我想知道如果表是 innodb 这仍然是真的吗?
Innodb 在执行 mysql_unbuffered_query 时是否使用行级锁定?
伪代码是:
$q = mysql_unbuffered_query("SELECT * FROM largeTable");
while($r = fetch($q)) {
if (some condition)
mysql_query("UPDATE largeTable SET field = somevalue WHERE id = someid");
}