Сообщество LeaderTask

Корзина => Архив => Советы => Тема начата: Phoenix от 27 Декабря 2009, 14:06:03

Название: Оптимизация базы данных
Отправлено: Phoenix от 27 Декабря 2009, 14:06:03
Поиском по форуму, и прогулкой по соответствующему разделу следующий финт не обнаружил. Может быть, плохо искал, но на всякий случай опубликую.

Оптимизация базы данных LeaderTask
При интенсивном создании/удалении новых записей базы данных разрастаются и фрагментируются. Так как данные органайзера хранятся в формате SQLite, я предположил, что его можно оптимизировать путём описанной ниже нехитрой операции.

1. Скачать консольный sqlite3.exe: http://sqlite.org/download.html
2. Поместить sqlite3.exe в каталог .\data.
3. Перейти в каталог (например, через Total Commander, или из командной строки Windows), и выполнить команду:
for %i in (*.dbase) do @echo VACUUM; | sqlite3 %i
3. После вакуумной очистки в тестовом случае (LeaderTask 6.8.1.0) размер базы сократился с 410 кб до 324 кб, база цела и открывается без проблем, загрузка происходит чуть быстрее. Теперь необходимо сделать обычную дефрагментацию базы данных (для этого используйте утилиту, которая позволяет дефрагментировать отдельные файлы - например, Piriform Defraggler или Auslogics Disk Defrag).

Не забудьте закрыть LeaderTask, и сделать резервную копию базы данных, прежде чем проводить оптимизацию. Если необходимо, расширение *.dbase в команде замените на другое. Рекомендуется повторять процедуру регулярно.
Было бы здорово, если кто-нибудь из владельцев объёмных баз (от 10 мегабайт и более) найдёт время, чтобы проверить, как сработает операция при таких размерах базы.
О том, что возможна вакуумная очистка баз SQLite, я прочёл здесь: http://forum.mozilla-russia.org/viewtopic.php?id=35762. Спасибо за внимание.
Название: Re: Оптимизация базы данных
Отправлено: xxxxxx от 27 Декабря 2009, 17:16:27
ИМХО, следует добавить, что перед манипуляциями с БД, нужно выйти из ЛТ
Название: Re: Оптимизация базы данных
Отправлено: Phoenix от 27 Декабря 2009, 18:01:43
xxxxxx, мне кажется, это вполне очевидный момент) Спасибо, добавил.
Название: Re: Оптимизация базы данных
Отправлено: xxxxxx от 27 Декабря 2009, 23:01:52
Я уже некоторое время (http://forum.leadertask.ru/index.php/topic,83.msg19898.html#msg19898) эпизодически использую плагин для Firefox - SQLite manager (http://sqlite-manager.googlecode.com) для исследования нововведений в БД ЛТ. Он так же позволяет использовать команду  VACUUM. 
Название: Re: Оптимизация базы данных
Отправлено: MinistrBob от 08 Января 2010, 01:43:36
Phoenix  +1 в репу

от себя добавлю готовый батник (со всеми необходимыми програмами) для оптимизации базы
в нём делается vacuum для базы , а потом файл дефрагментируется с помощью contig

Всё что находиться во вложении распаковать в подпапку .\data программы LT, туда где находятся база(ы) (например, U:\ProgramFiles\LeaderTask\Data\) и запускать батник optimization.cmd.
Название: Re: Оптимизация базы данных
Отправлено: Alexxa от 11 Января 2010, 19:20:40
MinistrBob, отличное portable решение. Разработчики - как насчет того, чтобы включить его в дистрибутив, если сохранить все авторские права?
Название: Re: Оптимизация базы данных
Отправлено: Дмитрий Маслов от 12 Января 2010, 12:31:26
vacuum происходит при обновлении базы автоматически, так же можно вызвать оптимизацию базы командой "Удалить завершенные задачи" (в Настройках), более широкие возможности по работе с базой и её оптимизацией будут добавлены позднее.
Название: Re: Оптимизация базы данных
Отправлено: MinistrBob от 12 Января 2010, 17:24:33
vacuum происходит при обновлении базы автоматически, так же можно вызвать оптимизацию базы командой "Удалить завершенные задачи" (в Настройках), более широкие возможности по работе с базой и её оптимизацией будут добавлены позднее.

Кстати, подтверждаю. Обновил версию, после этого поудалял завершенные задачи - размер базы резко сократился.

Полагаю что vacuum вручную имеет смысл делать если интервалы обновлений между версиями большие и в этот период множесто манипуляций с базой (особенно много удалений чего-либо). И при этом вы замечаете что прога работает всё медленее и медленее, особенно с флешки.

А каждый день или когда прога нормально работает и не тормозит - делать vacuum бессмысленно, наврядли это поднимет производительность. Да и риск испортить базу возрастает.

Кстати, настоятельно рекомендую перед каждым vacuum-ом делать резервную копию базы!!!  (для тех кто в танке  :)   )
Название: Re: Оптимизация базы данных
Отправлено: Alexxa от 12 Января 2010, 17:36:38
Вот и я начал замечать зависимоть между размером базы и скоростью работы LT. Пока - только при загрузке, и, надеюсь, в процессе работы это не скажется. С моей дефолтной базой - LT загрузился мгновенно. С рабочей - 5-7 сек. ;)
Название: Re: Оптимизация базы данных
Отправлено: Leonid от 13 Января 2010, 11:16:41
АУТЛУК СОЗДАЕТ ДВЕ БАЗЫ-УСЛОВНО:"РАБОЧАЯ" И"АРХИВ"
Название: Re: Оптимизация базы данных
Отправлено: Leonid от 13 Января 2010, 11:19:19
В "рабочей" идет все работа, и периодически происходит архивирование и помещение в "архив". Либо по установленным правилам, либо аутлук спрашивает  сделать ли это (тоже наверное в правилах где то записано, не интересовался).
Название: Re: Оптимизация базы данных
Отправлено: tamavla от 11 Апреля 2010, 00:18:56
Phoenix  +1 в репу

от себя добавлю готовый батник (со всеми необходимыми програмами) для оптимизации базы
в нём делается vacuum для базы , а потом файл дефрагментируется с помощью contig

Всё что находиться во вложении распаковать в подпапку .\data программы LT, туда где находятся база(ы) (например, U:\ProgramFiles\LeaderTask\Data\) и запускать батник optimization.cmd.

Попробовал данные не загрузились и все пропало .... пришлось все делать с самого начала.....
Название: Re: Оптимизация базы данных
Отправлено: starik01 от 13 Апреля 2010, 15:51:35
vacuum происходит при обновлении базы автоматически, так же можно вызвать оптимизацию базы командой "Удалить завершенные задачи" (в Настройках), более широкие возможности по работе с базой и её оптимизацией будут добавлены позднее.
Не нашел такой команды в настройках
Название: Re: Оптимизация базы данных
Отправлено: Do_zent от 14 Апреля 2010, 12:19:20
Не нашел такой команды в настройках
Опции- Настройки - Задачи - Удалить завершенные задачи.
Название: Re: Оптимизация базы данных
Отправлено: kostik_scout от 29 Ноября 2010, 23:14:18
Чуть-чуть подкорректировал предложенный здесь батник от MinistrBob: теперь позволяет оптимизировать не только БД LT, но и БД почты, а также дефрагментировать файлы этих БД (*.dbase).

0) Сделайте резервные копии обоих файлов *.dbase (расположены соответственно .\data и .\data\mail)
1) Распаковать архив в корень LT
2) Запустить optimization.cmd
3) Ожидать окончания (время зависит от размера БД и производительности компьютера). Две БД общим объемом около 90Мб оптимизировал и дефрагментировал за 1 мин. (Win7/AMD Athlon 2200Мгц/ОЗУ 2Гб)
3) По окончании посмотрите лог работы в консоли. При необходимости команду PAUSE можно из файла optimization.cmd убрать

Базы LT и почты сжал с 90Мб до 60Мб за 1 мин.

Проблем при работе с базами не обнаружено!
Название: Re: Оптимизация базы данных
Отправлено: OlZin от 30 Ноября 2010, 11:27:05
Спс,
подтверждаю:
= на одной из баз в 300 задач оптимизация примерно 15% (завершённые задачи удалены из LT). Её бэкап после выхода из LT весит на 65% меньше.
= пустая база писем из 20 штук оптимизировалась на 2000%, 2040/ 101 kb соответственно.
= пустая база данных только с настройками и без задач оптимизировалась на 16%. Её бэкап после выхода из LT весит на 15% меньше.
LT с облегченными данными загрузился без нареканий.

+ в репу.