Page 1 of 1

Формат базы?

Posted: Wed May 08, 2013 3:30 am
by diakin
Еще один момент.. не знаю насколько это возможно.
Со временем размер базы растет и открывать ся он начинает очень долго. Возможно конечно это связано с тем, что файл базы проверяется антивирусом, но все таки..
Нельзя ли сделать так, чтобы при запуске программы не открывалась база целиком, а считывался только последний открытый подраздел дерева? Может быть хранить разделы в отдельных mnb файлах, а дерево тоже хранить отдельно?

Re: Формат базы?

Posted: Wed May 08, 2013 3:35 am
by Marsianin
При запуске база не открывается целиком (попробуйте сначала запустить программу и потом открыть в ней базу), а тормоза при запуске ставит антивирус (например ESET), который долго думает из-за exe-упаковщика и защиты от взломов.

Re: Формат базы?

Posted: Wed May 08, 2013 4:26 am
by Oleg_K
Вопрос может и не совсем по теме. Ситуация такая. Имею основную базу (размер ~200Мб) каковою обычно и пользуюсь. Открывается быстро. Но если нужно открыть какую-то вспомогательную БД, то потом, при переоткрытии основной появляются тормоза. Т.е. тогда основная открывается достаточно медленно. Визуально это сопровождается последовательной отрисовкой разделов в дереве, словно проводится полная ревизия БД.
Вообще говоря я нашел кустарный способ как это обходить (копирую заранее сохраненный ini файл с настройкой на основную БД в директорию Марса перед открытием), но он не совсем удобный (приходится часто менять "эталонный" ini-шник).
Ну и собственно вопрос. А есть ли возможность "обманывать" Марс более честным способом?

Re: Формат базы?

Posted: Wed May 08, 2013 1:22 pm
by Marsianin
Вообще в ini-файле никаких настроек относящихся к базе данных нет. Только путь к файлу базы, который надо открыть при запуске программы.
Все остальные параметры базы (сжатие, пароль, шифрация) хранятся в самом файле базы, т.к. они индивидуальны для каждой из них.
При первом открытии идёт быстрый просмотр базы данных для загрузки элементов дерева, но сами данные от каждого раздела не считываются.

Re: Формат базы?

Posted: Thu May 09, 2013 5:26 am
by Oleg_K
Marsianin wrote:...При первом открытии идёт быстрый просмотр базы данных для загрузки элементов дерева...
Я понял это так, что Марс где-то хранит элементы дерева последней БД между сессиями чтобы не читать их всякий раз из файла? У меня была такая мысль, но подробно я это не исследовал, а в очевидных местах ничего такого на глаза не попалось. Если же состояние дерева между сессиями не хранится, то тогда мой "метод" с подстановкой ini-шника вообще не должен был бы работать. Либо быстрый просмотр не такой уж и быстрый. Ну или дополнительно производятся еще какие-то действия типа реиндексации.
Для сравнения, на первое открытие БД (~200Mb/1638 разделов/50 прикреплений) тратится 45 секунд, а повторное открытие производится почти мгновенно (пара секунд).

Re: Формат базы?

Posted: Fri May 10, 2013 1:49 am
by Marsianin
Oleg_K wrote:Я понял это так, что Марс где-то хранит элементы дерева последней БД между сессиями чтобы не читать их всякий раз из файла?
Нет, это не так.
Oleg_K wrote:Если же состояние дерева между сессиями не хранится, то тогда мой "метод" с подстановкой ini-шника вообще не должен был бы работать.
Он и не работает, это просто кэш диска. Вообще не представляю, что за метод такой и как ковыряя ini можно ускорить загрузку базы :retard:

Re: Формат базы?

Posted: Fri May 10, 2013 6:02 am
by Oleg_K
Marsianin wrote:Он и не работает, это просто кэш диска. Вообще не представляю, что за метод такой и как ковыряя ini можно ускорить загрузку базы :retard:
1) Перечитал свой пост и понял, что путанно объяснил суть процесса. Никакого "ковыряния ini" и не производится, просто идет борьба за строку 52 (LastDatabase=трам-тара-дам.mnb). И вместо того, чтобы находясь в открытой программе делать закрытие текущего ФАЙЛА БД/открытие нового (именно тут появляются тормоза), производится закрытие ПРОГРАММЫ и перезапуск ее с новым файлом. Хронометраж в последнем абзаце показывает разницу (45 сек при открытии файла внутри программы, против 2 сек при открытии файла вместе с запуском программы).
2) Зато я понял свою ошибку. Вместо того чтобы подсовывать нужный файл через ini, достаточно запускать Марс с параметром "трам-тара-дам.mnb". Почему сразу об этом не подумал? Я и сам себе удивляюсь :retard:
Теперь поправил ярлык и жизнь наладилась.
3) Доп.инфо. В случае работы с запароленными базами не корректно обрабатывается первая попытка открытия не дефолтного файла (т.е. в паре с кнопкой "Открыть" на форме ввода пароля и последующим выбором файла в проводнике) - всегда "съедается" одна попытка ввода пароля. Даже если коректный пароль к выбираемому файлу был введен заранее.
Это и стало одной из причин, почему возникло желание менять дефолтный файл еще до запуска Марса.