powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Медленное подключение к базе sqlite при первом подключении
21 сообщений из 21, страница 1 из 1
Медленное подключение к базе sqlite при первом подключении
    #39727654
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, подскажите почему при первом подключении к базе, подключение происходит довольно долго, особенно заметно на базах с большим объемом данных. После того как база загрузилась, то последующие запуски приложения с загрузкой базы происходит быстро, но только до тех пор пока компьютер не перезагрузишь, после перезагрузки, первый запуск опять долгий.

Вопросы такие:
1. почему так происходит?
2. как можно от этого избавиться, есть ли способ сделать первый запуск быстрым как и последующие?

Спасибо.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727657
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно первый раз идет чтение с диска, затем из кэша, т.е. из памяти. Если так, то просто сделать первый запуск в холостую, т.е. планировщик при старте ОС запускает какую-то прогу, которая обращается к базе.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727663
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЕсли так, то просто сделать первый запуск в холостую, т.е. планировщик при старте ОС запускает какую-то прогу, которая обращается к базе.Не совсем понятно о чем вы и при чем тут планировщик.
Опишу ситуацию подробнее. У меня есть приложение написанное на C#, с помощью библиотеки sqlite.dll я открываю базу. При первом запуске приложения база открывается долго, затем если закрыть программу и снова программу запущу и открою базу, то база открывается очень быстро, до тех пор пока я не перезагружу компьютер. После перезагрузки, первое открытие базы программой всегда долгое. Это происходит с каждой базой, которою я открываю программой.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727678
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Железо опиши. В нем проблема. Но по описанным симптомам просто достаточно сделать один фальшстарт и дальше все будет работать. Это самый дешевый вариант решения проблемы.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727681
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЖелезо опиши. В нем проблема. Но по описанным симптомам просто достаточно сделать один фальшстарт и дальше все будет работать. Это самый дешевый вариант решения проблемы.Дело не в железе. Потому как погуглив, понял что проблема не у одного меня, но ответа на решение проблемы я не нашел.
Вот к примеру у человека такая же проблема . Я в английском несилен, но из того что понял проблему там так и не решили.

Вот еще тут , но тот ответ что там указан:
Код: sql
1.
CREATE INDEX i_tableone_entry ON tableOne( entry );


мне не помог.

Так что тут дело не в железе, проблема распространенная.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727704
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neff,

Поддерживаю первый ответ ( 21723373 ).
Дай базе расширение которое не обрабатывается виндами как потенциально опасное или собственное виндовое.
Убедись что твоя база не лежит на сетевом диске.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727706
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlNeff,

Поддерживаю первый ответ ( 21723373 ).
Дай базе расширение которое не обрабатывается виндами как потенциально опасное или собственное виндовое.
Убедись что твоя база не лежит на сетевом диске.
Расширения менял, на проблему это никак не повлияло. База лежит на локальном диске.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727709
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу уточнить, скорее не при первом подключении базы, а при первом запросе SELECT, затем все работает быстро, даже если приложение закрыть а потом снова открыть и делать запросы к базе.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727727
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот еще аналогичная проблема, без ответа.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727838
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поискав информацию в сети, понял вашу мысль. Вы считаете, что при первом запуске происходит кеширование файла базы, средствами Windows, при первом запуске. Я решил проверить это, вот пример:

1. делаю первый запрос
Код: sql
1.
SELECT column1, column2 FROM Table1 WHERE column1 LIKE 'test'

Этот первый запрос длиться 30 секунд, после того как данные загрузились, закрываю приложение, затем открываю и снова выполняю данный запрос, данные загружаются за 1 секунду.

2. изменяю запрос на запрос
Код: sql
1.
SELECT column1 FROM Table1 WHERE column1 LIKE 'test'

И снова первый запрос занимает 30 секунд, а последующие 1 секунду.

Я так понял кеширование средствами OC тут не причем? Не могу понять, почему так происходит.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727874
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neff,

Может проблема в вашем провайдере данных (C# -> провайдер -> ADO.NET -> SQlite ). Попробуйте выполнить запрос через стандартную утилиту для sqlite, если задержек не будет, то проблема не в самих данныхи ни в ядре БД, тогда надо смотреть ваше приложение
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727880
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeffЯ так понял кеширование средствами OC тут не причем? Не могу понять, почему так происходит.
Возможно ни при чем. Но надо сделать ситуацию повторяемой, чтобы все могли увидеть и подтвердить. Как понимаю как-то завязаны старт ОС и использование LIKE.

Свои данные мало кто готов предоставить для опытов, отчасти поэтому тут 21680375 выкладывал скрипт создания относительно большой БД со штрихкодами, можно на ее основе попытаться повторить данную проблему. Сегодня некогда, завтра позанимаюсь.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727922
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLADNeff,

Может проблема в вашем провайдере данных (C# -> провайдер -> ADO.NET -> SQlite ). Попробуйте выполнить запрос через стандартную утилиту для sqlite, если задержек не будет, то проблема не в самих данныхи ни в ядре БД, тогда надо смотреть ваше приложениеЗдравствуйте, пробовал открывал базу в сторонних приложениях, например в SQLite Expert. Первый раз так же открывает с задержкой, последующие запуски открывает сразу за 1 сек.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727924
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TNeffЯ так понял кеширование средствами OC тут не причем? Не могу понять, почему так происходит.
Возможно ни при чем. Но надо сделать ситуацию повторяемой, чтобы все могли увидеть и подтвердить. Как понимаю как-то завязаны старт ОС и использование LIKE Открывал базу на других машинах и без использования LIKE, пробовал открывать базу сторонними утилитами, проблема та же. Долгий первый запуск, затем все быстро, пока не перезагрузишь компьютер или не скопируешь базу в другой каталог и снова открыть. Так что и при смене каталога первый запуск с задержкой, что странно.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727934
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TСвои данные мало кто готов предоставить для опытов, отчасти поэтому тут 21680375 выкладывал скрипт создания относительно большой БД со штрихкодами, можно на ее основе попытаться повторить данную проблему.Я попробовал скачал архив и преобразовалего по инструкции в посте и преобразовал ее в базу. Сторонней утилитой база открылась сразу без задержек.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727947
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин ребята, проблему решил благодаря этому 21680375 посту, спасибо Dima T за наводку. Проанализировав созданную с конвертированную базу sqlite.exe, увидел, что там добавлен индекс к каждому столбцу. Добавил индекс ко всем столбцам в своей базе через CREATE INDEX и все нормально заработало, база стала открываться быстро всегда и везде. Раньше то же пробовал CREATE INDEX, но не для всех столбцов, в этом видимо и была проблема. В общем спасибо за ответы, что натолкнули меня свой "косяк".
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39727980
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с новой проблемой...
Если я создаю таблицу, потом заполняю ее данными, затем создаю индексы через команду CREATE INDEX, то таблица всегда открывается быстро.

Но если я создаю таблицу, затем создаю индексы, а потом заполняю таблицу данными, то проблема остается.

Так и должно быть? Как правильно создавать индексы?
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39728126
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeffДобавил индекс ко всем столбцам в своей базе через CREATE INDEX и все нормально заработало
Это бред какой-то и так точно не надо делать.
Индекс нужен для быстрого поиска, т.е. если ты пишешь
Код: sql
1.
select ... where name = 'товар'


то тут нужен индекс по name, тогда поиск будет не перебором всей таблицы, а по индексу будут выбраны только нужные записи.
Минус индексов в том что при каждом insert/update требуется перестройка индекса, что тоже занимает время. Вкратце описал, не буду углубляться, при желании это в книгах почитаешь.
Явно дело не в индексах.

Несколько раз перечитал топик, согласен с подозрениями White Owl на антивирус, но сменой расширения его не проведешь. Просто отключи антивирус и запусти свою прогу - не будет тормозов, значит дело в нем, добавь прогу в исключения.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39728144
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, да я почитал про индексы и с вами согласен, но то что без индексов первый запуск таблицы составляет 30 секунд, а с индексами 1 сек это факт. Как сделать по другому, что бы без индексов загружалось за те же 1 сек, я не знаю.

В обще, ранее использовал под хранение данных, базы Access и там таких проблем не было, при том же формате таблиц и данных. Но затем пришлось искать альтернативу, так как у Access ограничение в 2 гб, а разделение таблиц на части делать не хочется.

Вот решил попробовать SQLite базы, но тут проблем оказалось не меньше, индексы, после удаления данных каждый раз вызывать команду VACUUM, что тоже не вариант, а PRAGMA auto_vacuum при создании таблиц не работает, так как видимо нужно включить параметр SQLITE_DEFAULT_AUTOVACUUM при компиляции библиотеки.

Если подскажите варианты баз, для хранения больших объемов данных буду благодарен. Нужно что бы база хранилась на локальном диске, одним файлом и помимо текста, можно было сохранять в базе документы в формате Word и PDF. Знаю что хранить файлы в базе плохая идея, но так нужно.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39728200
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeffDima T, да я почитал про индексы и с вами согласен, но то что без индексов первый запуск таблицы составляет 30 секунд, а с индексами 1 сек это факт. Как сделать по другому, что бы без индексов загружалось за те же 1 сек, я не знаю.
Индексы нужны, но там где надо. Как уже написал у них есть плюсы и минусы, т.е. прежде чем добавить индекс - надо понимать зачем он нужен.

NeffВ обще, ранее использовал под хранение данных, базы Access и там таких проблем не было, при том же формате таблиц и данных. Но затем пришлось искать альтернативу, так как у Access ограничение в 2 гб, а разделение таблиц на части делать не хочется.
Если у тебя база 2+ Гб и первый запрос делает скан всей базы, то считай: скорость чтения HDD ~100 мб/сек, т.е. 20+ сек в идеале. Скорость чтения памяти (кэша диска) 3-4 Гб/сек, т.е. меньше секунды. Скорее всего ответ в этом, сделай как я советовал 21723373 и забей.
NeffВот решил попробовать SQLite базы, но тут проблем оказалось не меньше, индексы, после удаления данных каждый раз вызывать команду VACUUM, что тоже не вариант, а PRAGMA auto_vacuum при создании таблиц не работает, так как видимо нужно включить параметр SQLITE_DEFAULT_AUTOVACUUM при компиляции библиотеки.
Ацессовские базы тоже пухнут и требуют сжатия, что по сути тот же VACUUM. auto_vacuum не рекомендую использовать, при твоих гигабайтах это будет тормоз после каждого удаления.
NeffЕсли подскажите варианты баз, для хранения больших объемов данных буду благодарен. Нужно что бы база хранилась на локальном диске, одним файлом и помимо текста, можно было сохранять в базе документы в формате Word и PDF. Знаю что хранить файлы в базе плохая идея, но так нужно.
Идея очень плохая, но если так нужно - хотя бы вынеси файлы в отдельную базу. Сделай одну нормальную базу, а вторую - куча файлов одной таблицей: (file_id int, file_data text) и там индекс по file_id чтобы быстро находить нужный файл.
По-хорошему надо использовать полноценный SQL-сервер (MSSQL, MySQL, Postgres, Oracle), но ты хочешь на файл-сервере прожить, тут только sqlite.
...
Рейтинг: 0 / 0
Медленное подключение к базе sqlite при первом подключении
    #39728250
Neff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, спасибо за рекомендации. Нужно будет попробовать с хранением файлов в отдельной базе. Просто файлов очень много (около 30 тыс.), но все небольшого размера, в среднем 100-200 кб, хранить и контролировать это не очень удобно. Была мысля хранить это все в zip архиве, что бы все было одним файлом, но как это все будет работать, когда в него придется добавлять/удалять файлы не знаю, надо потом протестировать.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Медленное подключение к базе sqlite при первом подключении
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]