Не могу понять причину зависания более-менее сложных запросов к sqlite базе.
Строк около 10 тысяч в двух таблицах, большинство запросов на выборку, редкие вставки и обновления, работает с базой один пользователь.
На обычном рабочем компьютере под виндой все запросы летают, никаких глюков не замечено.
При размещении того же скрипта и базы на сервере (vds под centos) простые запросы работают, выполняешь запрос с объединением и парой условий поиска, скрипт виснет при выборке.
Дело не в скрипте, для теста свёл его к минимуму: подключение, запрос, выборка и вывод в поток.
Такое чувство, что таблица блокируется и скрипт ждет снятия блокировки, но учитывая, что нет конкурентных запросов и никакой нагрузки ни на сервер, ни к конкретно этому скрипту или базе, то это выглядит очень странно.
С sqlite базами особо не сталкивался, поиск в интернете говорит о том, что проблема частая, но конкретное решение или хотя бы причину не увидел.
Помогите советом, что посмотреть.
Пример кода:
$sql = 'select distinct "items".* from "items" left join "notes" on "notes"."item_id" = "items"."id" where ("notes"."name" like "%test%")';
$db = new SQLite3('path/to/db.sqlite');
$ret = $db->query($sql);
while ($row = $ret->fetchArray(SQLITE3_ASSOC)) {
echo var_export($row, true) . "<br>";
}
$db->close();
// пробовал делать и так:
$db = new PDO('sqlite:path/to/db.sqlite');
$ret = $db->query($sql);
foreach ($ret as $row) {
echo var_export($row, true) . "<br>";
}
$db = null;