|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
Доброго времени суток форумчанам! Я на вашем форуме новичек и с sqlite работаю не так давно. Есть запрос, который по непонятным мне причинам работает то быстро, то очень тормозит, причем такое поведение наблюдается и из консоли и из приложения (приложение пишу на qt). Собственно вопрос, почему? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Таблицы, с которыми ведется работа: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
настройки базы: Код: sql 1. 2. 3. 4. 5. 6.
буду признательна за пояснение причины такого поведения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 15:57 |
|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
JosefinaЕсть запрос, который по непонятным мне причинам работает то быстро, то очень тормозит, причем такое поведение наблюдается и из консоли и из приложения (приложение пишу на qt). Перезагрузи машину. Запусти запрос. Если первый раз запрос выполняется медленно а второй и третий быстро (а сотый раз может быть опять медленным). То это будет виноват кэш. Лечить оптимизацией запроса и добавлением памяти. Если зависимости "медленный-быстрый-быстрый...." не наблюдается и самый первый запрос тоже бывает быстрым. Значит виноваты сторонние приложения (типа вирусов-антивирусов-браузеров-бекаперов), которые жадны до физических ресурсов и отжирают память-процессор не давая работать СУБД. Лечить отслеживанием что начало работать когда запрос тормозит и выкидыванием этого процесса. Проблемы с запросом по причине самого запроса обычно проявляются в виде постоянных тормозов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 18:17 |
|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
Josefina, Попробуй использовать транзакции. Очень помогает для Sqlite. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 23:51 |
|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
спасибо большое за ответы) White Owl, сейчас буду пробовать.. wamaco, все делаю через транзакции! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 09:37 |
|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
Проблема решена ) После перезагрузки компьютера стало понятно, что первый раз запрос выполняется оч долго, а дальше опять-таки почему-то рандомно по времени. Решила посмотреть используются ли предусмотренные индексы и посмотрев план выполнения запроса, я поняла, что индекс по дате не выполняется. Для данного запроса его нужно было написать вот так: Код: sql 1. 2.
Запрос стал выполняться за миллисекунды, ура-ура) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2013, 13:05 |
|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
Josefina, * status_id у вас внешний кей и без индекса. это так задумано? * parameter.device_id = 12 тут всегда константа? не пробовали построить составной индекс по этим двум полям вытащив более селективное в начало по идее это сократит выборку по базовому джойну и уменьшит кол-во под запросов к exists() parame_hash_index вероятно создан для других запросов? но если он не используется лучше удалить - тратит диск и время на перестройку. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2013, 02:16 |
|
Sqlite периодически виснет на выполнении запроса, почему?
|
|||
---|---|---|---|
#18+
PPA status_id - да, без индекса... читала в статьях, что если внешний ключ принимает несколько повторяющихся значений, то делать по нему внешний ключ не нужно. Это поле может принимать только 6 значений и не более того. parameter.device_id = 12 - нет, конечно, это для примера написан запрос... сюда значения device_id подставляются последовательно и запрос повторяется для каждого устройства. Составной индекс по этим полям делать не пробовала, попробую ))) Значение промежутка дат так же не постоянно, оно задается с интерфейса приложения. parame_hash_index надо удалить, вы правы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2013, 15:03 |
|
|
start [/forum/topic.php?fid=54&gotonew=1&tid=2008876]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 442ms |
0 / 0 |