mysqli_use_result () и параллелизм - PullRequest
       32

mysqli_use_result () и параллелизм

0 голосов
/ 26 февраля 2009

Согласно документации на mysqli_use_result

Не следует использовать mysqli_use_result (), если выполняется много обработки на стороне клиента, поскольку это свяжет сервер и не позволит другим потокам обновлять любые таблицы, из которых извлекаются данные.

Это относится только к таблицам myISAM или также к InnoDB?

1 Ответ

1 голос
/ 27 февраля 2009

Только что проверил: MyISAM блокирует, InnoDB не блокирует:

<?php
        $db = new mysqli() or die ("Cannot connect: " . mysqli_connect_error() . "\n");
        $query = "SELECT * FROM mytable";
        $db->real_query($query) or die ("Cannot fetch: $db->error\n");
        $result = $db->use_result() or die ("Cannot use result: $db->error\n");
        while($row = $result->fetch_row()) {
                print join("\t", $row) . "\n";
                usleep(1000000);
        }
?>

Это замки:

UPDATE mytable /* isam */ SET myvalue = 'test' WHERE id = 100

Это не:

UPDATE mytable /* innodb */ SET myvalue = 'test' WHERE id = 100
...