Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26160
Рейтинг: 2127
#901: 2012-03-06 13:25:55 ЛС | профиль | цитата
miver писал(а):
Используй transaction без отключения синхронизации и хранения в памяти

В наших компонентах этого делать необязательно, даже нежелательно, тк элементы запросов в них работают каждый в своей транзакции. Вот почему нельзя использовать, к примеру, VACUUM совместно с другими запросами в одном элементе, он просто не будет работать, тк должен выполнтся в своей, независимой транзакции
карма: 22

0
Ответов: 704
Рейтинг: 7
#902: 2012-03-06 13:26:02 ЛС | профиль | цитата
miver, взяли меня в просак Я все же буду делать запросы при просмотре логов и фильтрации оных - потому и база, а не файл.
карма: 0

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#903: 2012-03-06 13:29:39 ЛС | профиль | цитата
Neo, есть еще один прикол у SQLite. Движок имеет тенденцию накапливать память, и если модуль записи не будет перезапускаться ежедневно, то память со временем вырастит очень сильно и может даже подвесить комп. Побороть это дело PRAGMA запросами не получилось, память росла в любом случае, в одном меньше, в другом больше, но росла
карма: 22

0
Ответов: 758
Рейтинг: 112
#904: 2012-03-06 13:31:18 ЛС | профиль | цитата
Neo писал(а):
Я все же буду делать запросы при просмотре логов и фильтрации оных - потому и база, а не файл.

Если в БД 1-н столбик, то нет никакого резона
Надеюсь Вы знаете о существовании SearchInFile
карма: 1

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#905: 2012-03-06 13:32:14 ЛС | профиль | цитата
Neo писал(а):
Может у базы и есть сбой буфер, но при записи в файлы от 5Мб идут тормоза главного потока. Вот и хочу тут вставить буфер и в базу писать из параллельного потока. Это неверно?

Я написал как сделать. У меня с таким размером базы нет никаких тормозов главного потока
карма: 22

0
Ответов: 704
Рейтинг: 7
#906: 2012-03-06 13:42:15 ЛС | профиль | цитата
nesco писал(а):
Движок имеет тенденцию накапливать память
Вот как! Значит нужно бы вынести этот модуль записи в отдельную программу, и слать ей по UDP, перезапуская каждые сутки?
А если у меня в программе почти вся логика завязана на базах, но в памяти -как быть? Перезапускаться постоянно?
------------ Дoбавленo в 13.42:
miver, столбика 4, но раз уж все работает на базах, то думал и здесь использовать. Да и поиск по 20+Мб текста когда нужно сделать - база же быстрее?
карма: 0

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#907: 2012-03-06 13:49:58 ЛС | профиль | цитата
Neo писал(а):
Значит нужно бы вынести этот модуль записи в отдельную программу, и слать ей по UDP, перезапуская каждые сутки?

Я у себя так и сделал -- накопительня база, в которую постоянно пишутся данные с определенным интервалом. Каждые сутки, в 0 часов, модуль записи в базу перезапускается и создает новую базу, в которую пишутся данные уже за следующее число. На момент перезапуска используется внутренний буфер в модуле обработки. Это дело работает без остановки месяцами, пока я сам не перезапущу по надобности. Извне я к базе обращаюсь из совершенно другого модуля, который напрямую не связан с модулем записи и обработки, только по UDP для синхронизации.
карма: 22

0
Ответов: 758
Рейтинг: 112
#908: 2012-03-06 14:10:09 ЛС | профиль | цитата
Neo писал(а):
Да и поиск по 20+Мб текста когда нужно сделать - база же быстрее?

Не факт. Посмотри
Тут
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#909: 2012-03-06 14:12:26 ЛС | профиль | цитата
Neo писал(а):
Просто каждый раз при записи в базу (на диск) идет обращение к файлу
каждый раз не идет. На диск сбрасывается при заполнении буфера блока управления БД, который создается при открытии БД.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26160
Рейтинг: 2127
#910: 2012-03-06 14:19:38 ЛС | профиль | цитата
Tad писал(а):
На диск сбрасывается при заполнении буфера блока управления БД, который создается при открытии БД

И этот блок имеет тенденцию расти. Может движок и освобождает буфер, но не отдает освобожденное системе, даже принудительно дав ему сброс буфера в дефолтное состояние. Кстати, этим заразным явлением обладает и MSSQL, разрастается до неимоверных размеров, но на базе поболее
карма: 22

0
Ответов: 3889
Рейтинг: 362
#911: 2012-03-06 14:53:12 ЛС | профиль | цитата
Tad писал(а):
каждый раз не идет. На диск сбрасывается при заполнении буфера блока управления БД, который создается при открытии БД.

Это при PRAGMA synchronous=OFF, по умолчанию, если файл не занят, сброс идёт по возможности сразу, пачками по 1 Кб (по умолчанию).
------------ Дoбавленo в 14.53:
nesco писал(а):
Движок имеет тенденцию накапливать память, и если модуль записи не будет перезапускаться ежедневно, то память со временем вырастит очень сильно и может даже подвесить комп.

Если не ошибаюсь, с самого появления SQLite были жалобы на медленные и глючные функции работы с памятью по Windows (malloc, realloc и free). Зная это, разработчики предлагают множество способов компиляции с самыми разными методами работы с памятью, включая библиотеки сторонних разработчиков. Единственный способ быть уверенным в том, какой метод используется в Вашем экземпляре библиотеки - компилировать библиотеку самостоятельно
карма: 1

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#912: 2012-03-06 15:29:33 ЛС | профиль | цитата
1nd1g0 писал(а):
Единственный способ быть уверенным в том, какой метод используется в Вашем экземпляре библиотеки - компилировать библиотеку самостоятельно

Ага, вот этого мне очень сильно не хватало. Для меня гораздо проще и быстрее было сделать перезапуск, к тому же, все равно надо было создавать новую базу в 0 часов.
карма: 22

0
Ответов: 3889
Рейтинг: 362
#913: 2012-03-06 15:44:23 ЛС | профиль | цитата
nesco, разные способы работы с памятью имеют не только разную стабильность, но и разную производительность (так, стандартные медленнее, но стабильнее). Моё дело поделиться информацией, Ваше дело принять к сведению, к деятельности никого не агитирую
карма: 1

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#914: 2012-03-06 15:57:14 ЛС | профиль | цитата
1nd1g0 писал(а):
Моё дело поделиться информацией, Ваше дело принять к сведению, к деятельности никого не агитирую

Да я никаких претензий не питаю. Просто констатировл факт.
1nd1g0 писал(а):
стандартные медленнее, но стабильнее

Очень хорошо, мне стабильность более важна
карма: 22

0
Ответов: 704
Рейтинг: 7
#915: 2012-03-06 16:00:10 ЛС | профиль | цитата
nesco, очень интересно взглянуть на Вашу связку модулей с базой (если можно, выложите кусочек).
miver, все же база мне более родная. Поиск по ней проще и т.д..
Но я так и не понял конкретно по записи нескольких строк - нужно выполнять PRAGMA synchronous=OFF и писать все инсерты списком, или нет совсем никакого смысла? Ведь я четко вижу, что при каждой записи в базу создается файл журнала на диске. Даже если база 0 кб.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)