Оптимизация баз Lightroom и Firefox

Спасибо ilya_ya за помощь.

Итак, идея в том, что Lightroom хранит свои базы в SQLite. А их можно оптимизировать минимум двумя способами: командой «VACUUM» и дефрагментацией.

Для первого способа нужно скачать SQLite (всего то около 300 килобайт) и поместить экзешник куда-нибудь, где он будет доступен. Например в директорию Windows.

Для второго нужна махонькая тулза по имени contig (качается отсюда). Она очень быстро дефрагментирует — но не весь диск, а только тот файл, который вы указали. Распаковываем, помещаем в системную папку, чтобы был в доступе из командной строки.

Делаем файл «optimize_lightroom.cmd» с таким содержимым:

@ECHO OFF & CLS

for /f "tokens=*" %%X IN ('dir /b *.lrcat') do (
    rename "%%X" "1.lrcat"

    echo "Optimizing DB '%%X'..."
    sqlite3 1.lrcat "VACUUM;"

    echo "Defragmenting '%%X'..."
    contig -v "1.lrcat"   

    rename "1.lrcat" "%%X"
)

echo "Done."

Сохраняем его в папку, где лежит нужный нам каталог лайтрума. Или опять же в системную папку.

Мне таки не удалось заставить sqlite понимать русские имена, зато workaround с переименованием работает отлично. Если кто разберётся, как без этого обойтись, пишите.

Запускаем файл (при выключенном Лайтруме). Проверяем — не тот ли это эффект, что достигается с помощью команды «Relaunch&Optimize» внутри Лайтрума? У меня размер файла получился меньше.  Кроме того Лайтрум наверняка ничего не дефрагментирует.

Теперь от Firefox.

Код почти такой же:

@ECHO OFF & CLS

for /f "tokens=*" %%X IN ('dir /b *.sqlite') do (
   
echo "Optimizing DB '%%X'..."
    sqlite3
"%%X" "VACUUM;"
   
    echo "Defragmenting '%%X'..."
    contig -v
"%%X"
)

echo "Done."

С тем отличием, что Firefox не использует русских имён и переименовывать ничего не надо.

Скрипт запускаем в папке профиля текущего пользователя. Что-то вроде «c:\Documents and Settings\ItsMe\Application Data\Mozilla\Firefox\Profiles\jkbhtp65.default». Там должно быть штук восемь файлов с расширением «sqlite» — это верный признак. Разумеется перед запуском выключите Firefox.

И создайте backup — хотя бы в первый раз, пока не убедитесь, что всё работает.

Ну как, стало быстрее?

 

p.s. Как бы написать программу, генерирующую превью без участия Lightroom… Сколько бы времени сэкономило бы!

12 Comments

  1. Я для такой вот простенькой автоматизации часто использую AutoIt. Он умеет достаточно много всего, не такой геморройный, как WSH, и при необходимости скрипт компилируется в небольшой standalone экзешник.

    • Интересная штука.

    • Скачал, читаю описание.

      Зря они используют «=» как оператор сравнения, наравне с «==», при том что «=» ещё и assignment. Путаница. Когда я в логических конструкциях вижу один «=» у меня рефлекс срабатывает — или это ошибка, или тут задумано назначение переменной.

      • а что, обычная SQL семантика, там тоже равенство и присвоение одним “=”.

        • Здесь есть ещё и вариант с «==», что нехорошо. Пересторались с «синтаксическим сахаром».

      • Оно из бейсика родом, там «==» и в помине не было :)

        • Но здесь то есть. Меня амбивалентность смущает — что можно и так и так.
          Я понимаю, что это syntax shugar, так вот он на мой взгляд излишний.

          А в остальном, замечательная штука. Я вчера было начал сетовать на слабые сетевые возможности, но опомнился, погуглил и скачал интересную библиотеку WinHTTP. Если она ещё и куки ест, вообще супер.
          И интерфейсы довольно легко делаются, хоть и не графически. Но для мелких задач — то, что надо.

          Было время, был язык C–. Нечто среднее между С и ASM. Он тоже занимал удобную промежуточную нишу. Компактные мелкие программы, но написанные нагляднее и легче, чем на ассемблере.

  2. а я поставил себе Core 2 Quad 9300 + 4gig RAM + Vista 64 и все летает без командной строки) цена вопроса (а это еще блок питания новый, материнка и кулер, остальное от старого компа) – 17500.

    • Вот, наконец-то нашёл куда встрять с вопросом о предпочтительном железе. Что касается большого объёма памяти и т.д. тут вопрос не стоит. Дело в том, что давно использую 4ГБ (хорошими таймингами), относительно шуструю материнскую плату с дорогим и не слабым (~год назад) блоком питания, но вот проц никак не сменю (AMD Athlon 5600+ (2 ядра если что)). Сейчас встал вопрос о смене системы на Intel (Core i5 or Core i7) или оставаться приверженцем AMD (Phenom X4 965). Что вообще Adobe или другие люди говорят? (Вам как сертифицированному от Adobe по идее что-то должно быть известно же?) Осмелюсь предположить, что они больше за Intel, т.к. у них Маки на ядре Интела, а их софт заточен под Маки оч хорошо, судя по тому что я мог видеть. Ваше мнение по базе компьютера? не смотря на то, что вы уже приоблрели Core 2 Quad 9300 ещё в начале 2009 года.

  3. А что есть «генерировать превью без участия Lightroom»? Что должно быть на входе и что на выходе?

    • Вход: исходные raw или прочие файлы.
      Выход: внутри каталога Lightroom уже сгенерены превью 1:1.

      Что-то я покопался в таблицах каталога и пришёл к выходу, что самый простой путь — запустить второй лайтрум на соседнем компьютере или на виртуальной машине. По затратам сил и времени лучший вариант.