基本的には大きなデータ セットを操作する必要があるため、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");
}