ZebroidФорумПубличный разделВопросыSQlite проект, что это

SQlite проект, что это

12 декабря 2015, 20:42
Зарегистрирован: 22 сентября 2012, 20:02
При открытии проекта вижу появилось новое меню открыть проект в режиме «Sqlite проект(бета)». Не нашел описания про эту функцию. Расскажите пожалуйста, что это?

12 декабря 2015, 23:00
Зарегистрирован: 10 апреля 2012, 00:00
Это способ хранение временных данных проекта. В нормальном режиме Зеброид хранит все данные проекта в оперативной памяти, но для больших проектов этот способ не подходит, памяти может не хватать. В таких случаях вместо оперативной памяти Зеброид будет использовать винчестер. В режиме Sqlite данные хранятся в Sqlite базах данных, которые позволяют минимизировать расход оперативной памяти и при этом предоставляют вполне не плохое быстродействие (медленнее конечно чем оперативная память, но зато нету ограничения на размер проекта).

Приставку «бета» можно забрать, этот режим существует давно, им пользуются и еще не было жалоб на стабильность.

13 января 2016, 05:16
Зарегистрирован: 22 сентября 2012, 20:02
Все отлично. Но он такой медленный… 100к записей уже 3-й час добавляются в проект. А еще впереди обработка, на пару часов.
Нужно обработать миллионы записей, а по моим подсчетам это займет 750 часов = 31 суток. Есть ли способы разогнать Sqlite? подобно этому методу Your text to link...?

Попутный вопрос:
1) Создал пустой проект.
2) Сохранил его.
3) Открыл его в режиме Sqlite
3) Делаю импорт 100 к записей (3 часа), использование оперативки ~300 Мб, полет нормальный.
4) Нажимаю "Сохранить". использование оперативки ~300 Мб
5) Нажимаю каплю макрос (в ней поиск замена и сбор полей) — оператива начинает съдаться Зеброй, за минуту ~2.3 Гб. но на этой отметке и стоит. Спустя 20 минут, потребление оперативки уменьшилось до 1.5 гб. Процесс замены идет. Спустя час, 3.9 Гб. процесс остановился Зебра слетела.

Заново открываю сохраненный проект в режиме Sqlite со 100к записями. Оператива опять съедается, прога вылетает.
— Попытка № N: Создаю пустой проект. Сохраняю. Открываю его в режиме Sqlite. Делаю импорт 100к — оперативка стоит на месте как вкопанная. В обычном режиме импорт — оперативка разрастается.

Я не программист, по этому спрашиваю. Sqlite в Windows 7 x64 — установлен по умолчанию? Есть такое чувство, что это отдельный пакет, который нужно установить. Может есть какое то ограничение. На днях я запускал мелкий проект на 40к записей в режимеSqlite, было все нормально. А вот с большим проблема.

Комментарий отредактирован 8 раз(а). Последний раз редактировал jozess 15 января 2016, 19:45.
18 января 2016, 00:39
Зарегистрирован: 10 апреля 2012, 00:00
Тему с багов удалил. Субъективные ощущения медленной работы — это еще не баг. Странно ожидать обрабатывать огромные объемы в мгновение ока.

Есть ли способы разогнать Sqlite? подобно этому методу Your text to link...?
Поддержка Sqlite, я точно её оптимизировал для работы с нужными условиями, но что конкретно делал уже не вспомню. Я обязательно сверюсь со статьей и посмотрю, может что-то упустил.

Я не программист, по этому спрашиваю. Sqlite в Windows 7 x64 — установлен по умолчанию? Есть такое чувство, что это отдельный пакет, который нужно установить. Может есть какое то ограничение. На днях я запускал мелкий проект на 40к записей в режимеSqlite, было все нормально. А вот с большим проблема.
Зеброид таскает с собой встроенную библиотеку для работы с SQLite, ему ничего отдельно устанавливать не нужно.

В вашем случае я бы рекомендовал использовать более мелкие проекты с паре с обработчиком нескольких проектов. Он как раз для таких целей и создан. Обработать по очереди несколько проектов используя оперативку будет в разы быстрее, чем один большой используя SQLite (как бы я её не заоптимизировал).

18 января 2016, 19:52
Зарегистрирован: 22 сентября 2012, 20:02

admin в своем сообщении писал(а):Тему с багов удалил. Субъективные ощущения медленной работы — это еще не баг. Странно ожидать обрабатывать огромные объемы в мгновение ока.


Но дело в том, что Sqlite у меня не работает вообще. Сколько раз я не пробовал — Утечка памяти все равно идет.

В вашем случае я бы рекомендовал использовать более мелкие проекты с паре с обработчиком нескольких проектов. Он как раз для таких целей и создан. Обработать по очереди несколько проектов используя оперативку будет в разы быстрее, чем один большой используя SQLite (как бы я её не заоптимизировал).

Да, это может помочь. Вот импортирую проект 400к записей, уже больше суток жду. А вот 50к — примерно 20 минут.
Но текстов очень много. Может быть стоит добавить новую фишку в импорт?
Пример. Добавляю папку с очень большим количеством текстов, к примеру 500к. Зеброид будет автоматом создавать мелкие проекты по 20к. А затем уже их можно обработать по очереди «обработчиком нескольких проектов». Но у меня мультисайт проект 300 сайтов. Как его разбить?
Создам тему в предложениях.

Комментарий отредактирован 1 раз(а). Последний раз редактировал jozess 19 января 2016, 15:56.
20 января 2016, 21:10
Зарегистрирован: 10 апреля 2012, 00:00
Но дело в том, что Sqlite у меня не работает вообще. Сколько раз я не пробовал — Утечка памяти все равно идет.

Чтобы найти утечки (если они есть конечно) — нужно знать какими инструментами и с какими настройками вы пользовались.

Да, это может помочь. Вот импортирую проект 400к записей, уже больше суток жду. А вот 50к — примерно 20 минут.
Но текстов очень много. Может быть стоит добавить новую фишку в импорт?
Пример. Добавляю папку с очень большим количеством текстов, к примеру 500к. Зеброид будет автоматом создавать мелкие проекты по 20к. А затем уже их можно обработать по очереди «обработчиком нескольких проектов». Но у меня мультисайт проект 300 сайтов. Как его разбить?
Создам тему в предложениях.
Если разбить контент по папкам — то можно использовать инструмент "Пакетное создание проектов"

04 февраля 2016, 18:02
Зарегистрирован: 22 сентября 2012, 20:02

admin в своем сообщении писал(а):Чтобы найти утечки (если они есть конечно) — нужно знать какими инструментами и с какими настройками вы пользовались.

Запаковал программу в архив с проектом. Скину вам в личку.
Если разбить контент по папкам — то можно использовать инструмент "Пакетное создание проектов"
Для мультисайтового проекта это не очень подходит.

Еще есть мысль. Заметил, что если запускаю Каплю макрос (в которой много пунктов «поиск-замена» и др. действия) — то при очередном выполнении какого либо блока оперативка иногда сбрасывается. Но если в блоке много шагов поиска замены, то оперативка разжирается.



Можно ли как то разбить блок? Т.е, например, в 1-ом блоке поиска-замены у нас 15 микро-шагов поиска-замены. После каждого выполнения микро-шага, оперативка сбрасывалась. На текущий момент есть такое ощущение, что оперативная память сбрасывается после выполнения всего блока в 15 микро-поисков.

04 февраля 2016, 23:58
Зарегистрирован: 10 апреля 2012, 00:00
Спасибо за проект, причину происходящего узнать удалось. Но, чтобы было понятнее сначала немного теории:

Выделением и освобождение памяти управляю не я (программист), а менеджер памяти. Специфика работы менеджера памяти состоит в том, что он старается распоряжаться памятью максимально оптимально (в том числе и в вопросе производительности). Когда программа просит выделить ей определенный кусок памяти под какие-то данные, менеджер просит её у ОС, а когда память программе уже не нужна, он её помечает как свободную, но не всегда сразу возвращает ОС, а оставляет на всякий случай в распоряжении программы, чтобы если вдруг снова нужно — сразу же дать её программе без необходимости просить еще раз ОС. Именно потому и получается так, что инструмент вроде и закончил свою работу, а память не уменьшилась.

Теперь что касается проблемы и почему так происходит: дело в том, что все данные, которые нужны Зеброиду для отката изменений (а это текст статьи до её редактирования) он держит в оперативной памяти и скидывает в дамп лишь в тот момент, когда инструмент завершил свою работу. И чем больше записей затрагивает инструмент в процессе обработки проекта — тем больше оперативки забивается этой информацией. Честно говоря я только сейчас сообразил, что информацию необходимую для отката изменений нужно сохранять точно в такое же хранилище, в котором хранятся обычные тексты постов, т.е. если у нас проект SQLite — то старые версии статей нужно хранить в формате SQLite (реализую в следующем плановом обновлении).

Но в любом случае, если у вас слишком большой проект — я бы рекомендовал в настройках программы установить значение опции «Лимит журнала изменений» в 0 значение, это как минимум немного ускорит работу инструментов программы, а так же частично решит текущую проблему. Почему частично? Дело в том, что я допустил ошибку, и к примеру, в инструменте «Замена», даже при 0 значении оперативка забивается информацией для отката (эту проблему я уже исправил и в ближайшем багфиксе будет нормально работать). А вот в инструменте «Сборщик полей» при 0 лимите журнала изменений потребление оперативной памяти будет значительно скромнее.

В общем такие дела. Утечек памяти нету.

05 февраля 2016, 00:10
Зарегистрирован: 22 сентября 2012, 20:02
Хорошие новости, спасибо за разъясниния! Буду тестировать дальше, если что отпишу. Проектов больших еще куча)