Задать вопрос

В чём может быть причина тормозов запросов к sqlite?

Не могу понять причину зависания более-менее сложных запросов к 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;
  • Вопрос задан
  • 234 просмотра
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы