|
39 / 38 / 4
Регистрация: 07.05.2013
Сообщений: 96
|
|
SQLite скорость записи в базу данных19.05.2013, 12:46. Показов 7509. Ответов 4
Метки нет (Все метки)
Решил посмотреть SQLite и с чем его едят. Вроде со всем разобрался и очень все понравилось, кроме скорости записи в базу данных.
Решил потестить – на лету создать базу данных в ней сто таблиц и в каждую таблицу записать 1000 записей. В каждой таблице 16 столбцов реал + два столбца для хранения времени ввиде строк. По идее для SQL-серверов это просто смешная задача, но вот SQLite на это потратил примерно 96 минут!!! При этом: 1. Загрузка проца 1-5% (при чем проц работает в энергосберегающем режиме на 800 МГц вместо 3000). 2. Размер базы данных по окончанию теста составил всего около 20 Мб. При этом винт на всем протяжении теста работал постоянно. Винт систематически подвергается дэфрагментации, да и размер файла явно указывает, что жесткий диск не может являться узким местом этого теста. Теперь вопросы: 1. Это нормальная скорость записи для SQLite? 2. Что можно сделать для ускорения записи в базу данных?
0
|
|
| 19.05.2013, 12:46 | |
|
Ответы с готовыми решениями:
4
Правильно оформить базу данных Sqlite (Клиент и записи клиента)
Не открывает базу данных SQLITE |
|
78 / 78 / 15
Регистрация: 27.01.2013
Сообщений: 323
|
|
| 20.05.2013, 13:04 | |
|
Стоит накопить записи в строке например, а потом все сразу записывать в базу в меньшем количестве транзакций.
Также цитирую отсюда: А почему все жалуются, что SQLite — тормозит? Две причины. Первая — настройки по умолчанию. Они работают на надежность, а не на производительность. Вторая — непонимание механизма фиксации транзакций. По умолчанию после любой команды SQlite будет фиксировать транзакцию (то есть ожидать пока БД окажется в целостном состоянии для отключения питания). В зависимости от режима паранойи SQLite потратит на это от 50 до 300 мс (ожидая окончания записи данных на диск). Что делать-то? Мне нужно вставить 100 тыс записей и быстро! Удалить индексы, включить режим синхронизации OFF (или NORMAL), вставлять порциями по N тысяч (N — подобрать, для начала взять 5000). Перед вставкой порции сделать BEGIN TRANSACTION, после — COMMIT.
2
|
|
|
39 / 38 / 4
Регистрация: 07.05.2013
Сообщений: 96
|
|
| 23.05.2013, 07:12 [ТС] | |
|
Спасибо, за ссылку. Натыкался на её и раньше но до третьей закладки не до листывал :-(
На этот раз пришлось читать. После прочитанного тот же объем данных был записан на винт за 124 секуны, что примерно в 50 раз быстрее от моего первого варианте! Остался один вопросик. Я заметил, что если в базе данных удалить таблицу и тд. объем не уменьшается и при попытке записать данные в базу скорость записи (при настройка по умолчанию) возрастает в 3-5 раз. Теперь сам вопрос, как при создании базы данных на лету, указать желаемый размер базы (приблизительно он известен)?
0
|
|
|
78 / 78 / 15
Регистрация: 27.01.2013
Сообщений: 323
|
|
| 24.05.2013, 10:11 | |
|
Как заранее указать размер не знаю.А насчет почему размер базы не уменьшается при удалении: неиспользуемое дисковое пространство добавляется во внутренний список свободного места и повторно используется при вставке данных. Для уменьшения базы, используется команда VACUUM. Однако VACUUM занимает некоторое время (от полсекунды на мегабайт). Но SQLite имеет альтернативу использованию команды VACUUM - режим auto-vacuum, который включается auto_vacuum прагмой.
2
|
|
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 22.08.2016, 16:34 | |
|
0
|
|
| 22.08.2016, 16:34 | |
|
Помогаю со студенческими работами здесь
5
Создать базу данных sqlite Delphi запись данных в базу SQLite Как открыть базу данных sqlite 3.x? Установка пароля на базу данных в SQLite Импортировать csv файл в базу данных SQLite Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|