Автор Тема: Оптимизация базы данных  (Прочитано 17042 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phoenix

  • Новичок
  • *
  • Сообщений: 8
  • Репутация +5/-0
    • Просмотр профиля
    • Лаборатория Панфилова
Оптимизация базы данных
« : 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. Спасибо за внимание.
« Последнее редактирование: 27 Декабря 2009, 17:59:17 от Phoenix »
Мне сложно это объяснить, но у меня возникло странное ощущение, что меня гуглят.

Оффлайн xxxxxx

  • Опытный
  • *****
  • Сообщений: 582
  • Репутация +49/-1
  • Не плачу за обновления за право быть бета-тестером
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #1 : 27 Декабря 2009, 17:16:27 »
ИМХО, следует добавить, что перед манипуляциями с БД, нужно выйти из ЛТ
Ждать осталось совсем немного  ;)

Оффлайн Phoenix

  • Новичок
  • *
  • Сообщений: 8
  • Репутация +5/-0
    • Просмотр профиля
    • Лаборатория Панфилова
Re: Оптимизация базы данных
« Ответ #2 : 27 Декабря 2009, 18:01:43 »
xxxxxx, мне кажется, это вполне очевидный момент) Спасибо, добавил.
Мне сложно это объяснить, но у меня возникло странное ощущение, что меня гуглят.

Оффлайн xxxxxx

  • Опытный
  • *****
  • Сообщений: 582
  • Репутация +49/-1
  • Не плачу за обновления за право быть бета-тестером
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #3 : 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. 
Ждать осталось совсем немного  ;)

Оффлайн MinistrBob

  • Способный
  • ***
  • Сообщений: 182
  • Репутация +21/-0
  • Да - это я.
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #4 : 08 Января 2010, 01:43:36 »
Phoenix  +1 в репу

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

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

Оффлайн Alexxa

  • Мега Модератор
  • Маэстро
  • *****
  • Сообщений: 3102
  • Репутация +230/-6
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #5 : 11 Января 2010, 19:20:40 »
MinistrBob, отличное portable решение. Разработчики - как насчет того, чтобы включить его в дистрибутив, если сохранить все авторские права?
О характере человека можно судить по тому, как он ведет себя с теми, с кем ему необязательно вести себя хорошо...

Оффлайн Дмитрий Маслов

  • Администратор
  • Маэстро
  • *****
  • Сообщений: 6146
  • Репутация +220/-19
  • Я делаю мир таким!
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #6 : 12 Января 2010, 12:31:26 »
vacuum происходит при обновлении базы автоматически, так же можно вызвать оптимизацию базы командой "Удалить завершенные задачи" (в Настройках), более широкие возможности по работе с базой и её оптимизацией будут добавлены позднее.

Оффлайн MinistrBob

  • Способный
  • ***
  • Сообщений: 182
  • Репутация +21/-0
  • Да - это я.
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #7 : 12 Января 2010, 17:24:33 »
vacuum происходит при обновлении базы автоматически, так же можно вызвать оптимизацию базы командой "Удалить завершенные задачи" (в Настройках), более широкие возможности по работе с базой и её оптимизацией будут добавлены позднее.

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

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

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

Кстати, настоятельно рекомендую перед каждым vacuum-ом делать резервную копию базы!!!  (для тех кто в танке  :)   )

Оффлайн Alexxa

  • Мега Модератор
  • Маэстро
  • *****
  • Сообщений: 3102
  • Репутация +230/-6
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #8 : 12 Января 2010, 17:36:38 »
Вот и я начал замечать зависимоть между размером базы и скоростью работы LT. Пока - только при загрузке, и, надеюсь, в процессе работы это не скажется. С моей дефолтной базой - LT загрузился мгновенно. С рабочей - 5-7 сек. ;)
О характере человека можно судить по тому, как он ведет себя с теми, с кем ему необязательно вести себя хорошо...

Оффлайн Leonid

  • Опытный
  • *****
  • Сообщений: 620
  • Репутация +29/-2
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #9 : 13 Января 2010, 11:16:41 »
АУТЛУК СОЗДАЕТ ДВЕ БАЗЫ-УСЛОВНО:"РАБОЧАЯ" И"АРХИВ"

Оффлайн Leonid

  • Опытный
  • *****
  • Сообщений: 620
  • Репутация +29/-2
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #10 : 13 Января 2010, 11:19:19 »
В "рабочей" идет все работа, и периодически происходит архивирование и помещение в "архив". Либо по установленным правилам, либо аутлук спрашивает  сделать ли это (тоже наверное в правилах где то записано, не интересовался).

Оффлайн tamavla

  • Активист
  • **
  • Сообщений: 65
  • Репутация +3/-0
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #11 : 11 Апреля 2010, 00:18:56 »
Phoenix  +1 в репу

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

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

Попробовал данные не загрузились и все пропало .... пришлось все делать с самого начала.....
(ILoveLeaderTask)

Оффлайн starik01

  • Активист
  • **
  • Сообщений: 82
  • Репутация +5/-0
    • Просмотр профиля
    • SelfArea.com - Совершенствуя себя
Re: Оптимизация базы данных
« Ответ #12 : 13 Апреля 2010, 15:51:35 »
vacuum происходит при обновлении базы автоматически, так же можно вызвать оптимизацию базы командой "Удалить завершенные задачи" (в Настройках), более широкие возможности по работе с базой и её оптимизацией будут добавлены позднее.
Не нашел такой команды в настройках

Оффлайн Do_zent

  • Мега Модератор
  • Опытный
  • *****
  • Сообщений: 597
  • Репутация +52/-0
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #13 : 14 Апреля 2010, 12:19:20 »
Не нашел такой команды в настройках
Опции- Настройки - Задачи - Удалить завершенные задачи.

Оффлайн kostik_scout

  • Способный
  • ***
  • Сообщений: 101
  • Репутация +10/-1
    • Просмотр профиля
Re: Оптимизация базы данных
« Ответ #14 : 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 мин.

Проблем при работе с базами не обнаружено!