![]() |
|
|
![]()
|
|
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
Всем привет!
Следующая проблема Программа, аналог UpdateScannera'a в FireFox Цель - сканировать сайты на предмет наличия новых ссылок Допустим, добавили 10 сайтов, и в начальный момент времени все они запускаются на анализ и в базу добавляется порядка 300 ссылок по каждому сайту, притом - параллельно и с использованием транзакций для усорения работы Итого порядка 3000 - 4000 вставок по 300-400 параллельных Как следует из сабжа, бд - SQLite Проблема - БД, судя по всему блокируется на время транзакции, и прога выкидывает ошибку: database is locked Unable to fetch row Собственно, такая ошибка может появляться и при каких-то других случаях, суть в том, что база лочится, и это ведёт к ошибке Вопрос Как обойти эту проблему, какие варианты решения Вы знаете? P.S. Пробовал
Буду благодарен за любые советы! --------------------
stay true |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
300-400 одновременных транзакций на sqlite Я бы очень удивился, если это работало -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
В-общем, использую такое временное решение )
Вы удивитесь) Итааак.....
Смысл: если запрос не выполняется сразу, пишем сообщение об ошибке в лог файл функцией errorMessage, и запускаем выполнение команды до тех пор, пока она не выполнится (в нашем случае она будет пытаться выполняться до тех пор, пока база не разлочится) Такой вот аналог мутексов Если вдруг будет допущена ошибка в SQL запросе - мы узнаем об этом через лог --------------------
stay true |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Lindemann66, в твоём случае лучше использовать одну транзакцию, а делать commit раз в 100 (или лучше в config.commitCount()) записей.
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |