...

Оптимизация базы данных

Тема в разделе "Разработчикам", создана пользователем Адель, 2 апр 2017.

  1. Адель

    Адель Member

    Очень остро стоит проблема производительности системы

    Даже изначально, когда в 2014 году поставили Элму на чистой базе, скорость отклика системы на действия пользователей восторгов не вызывала. Но ничего, привыкли.

    Коммерческая версия 3.7, экспресс, фаерберд

    В 2016 был вынужден снести старую базу и создать новую с экспортированием всех данных по клиентам. Старая база была засрана огромных количеством различных версий процессов, часть из которых ввиду ошибок было нельзя прервать. Работала с жуткими тормозами.

    Сейчас новая база существует нормально. Ревностно отношусь к ее чистоте. Регулярно делаем оптимизацию по способу описанному в базе знаний. Все процессы отлаживаю на альтернативной базе (по вечерам/выходным/ночам, заменяя полностью папку User config). А в текущую базу выношу только итоговые версии процессов.

    Тем не менее база постоянно растет (на текущий момент 18 гб), и хоть тормозов я пока не замечаю, все равно есть постоянное беспокойство их увидеть в какой-то момент.

    В связи с этим есть несколько общих и конкретных вопросов:

    1. Есть ли какие-то дополнительные способы облегчить, очистить базу?
    2. Возможно ли удалить ленту сообщений начиная с какой-то даты назад? (Она явно огромная и не представляет никакой ценности)
    3. Можно ли удалить в базе старые, устаревшие на текущий момент версии процессов? Не экземпляры процессов, а сами процессы.
    По вопрос 3, отдельный комментарий. В отладочной базе у меня процесс, у которого более 300 версий опубликованных. По мере отладки процесса, база очень сильно разрослась в объеме (только из-за этих процессов) и снизила скорость своей работы. Поэтому в рабочей базе хотелось бы убрать все лишние версии процессов.
     
  2. el-man

    el-man New Member

    18 гиг для фаерберда не предел, но нужно внимательно подойти к конфигурации железа. Если ресурсов будет хватать, скорость будет удовлетворительная. Ну и бэкап-рестор регулярно делать.
     
  3. Адель

    Адель Member

    А какое железо желательно? У нас уж обычная писишка в качестве сервера работает со свежим железом, единственно винты в рейдмассив вывели на всякий случай. Правильный сервер собирать не готовы для экспресс версии на 15 человек.

    В базе знаний есть описание как несколько ядер задействовать в работе с базой, но не знаю стоит ли овчинка выделки.

    И больше интересует именно сама оптимизация и очистка базы изнутри.
     
  4. pushkarev

    pushkarev Active Member

    Средства для очистки данных ELMA реализовала, отдельное приложение называется "Управление конфигурациями", но не уверен что поддерживается ваша редакция системы. Вот справка по этому приложению.
    Можно сделать процесс по очистке данных, вот статья по тому как это можно сделать: https://www.elma-bpm.ru/kb/article-619.html
    По поводу ленты сообщений в ELMA 3.9 Появилась возможность архивирования ленты сообщений (на сколько я знаю сообщения физически переносятся в другую таблицу).
    К росту базы нужно относиться спокойнее, за год при использовании она гигабайт 10-20 спокойно набирает даже на небольших конфигурациях, из-за обилия индексов и множества служебной логируемой информации.
    В целом я бы порекомендовал вам обновиться. В версии 3.9 систему сильно оптимизировали, по моему опыту стала значительно живее работать. Так же я бы рекомендовал перейти на базу PostgreSQL (там на мой взгляд лучше с производительностью и использованием оперативной памяти без колдовства как в FireBird). Ну и конечно желательно разделить на 2 сервера (Сервер приложений и БД).
     
  5. Адель

    Адель Member

    Алексей спасибо за советы! Судя по скриншоту из справки, приложение по очистке базы работает начиная с версии 3.6, попробую, значит и на моей должна заработать. Правда для меня остался актуален вопрос с устаревшими версиями процессов. Есть такой вариант. Удаляю полностью в дизайнере процесс (он удаляется полностью вместе со всеми версиями). Затем загружаю этот же процесс (его последнюю версию). Но абсолютно уверен, что будут проблемы, так как все имена внутри процессов будут одинаковые.

    Возможность с PostgreSQL появилась относительно недавно к сожалению. Безболезненного перехода с уже существующей базы я так понимаю нет (

    Вариант разделить на сервер приложений и сервер БД очень заинтересовал, никогда не слышал про такую возможность. Буду мучать своего сисадмина.
     
  6. pushkarev

    pushkarev Active Member

    В ELMA нет возможности что-то удалить полностью, только руками в БД. Когда вы удаляете процесс в дизайнере фактически ничего не удаляется а процесс помечается как удаленный, это так называемое "мягкое удаление". Поэтому в БД запись о процессе и таблица с контекстом остаются.
    В современном мире на размер БД удалять что-то из БД не принято, потому что появляются дыры в индексах, и производительность ухудшается (а перестраивать индексы на больших базах долго), а жесткие диски нынче не дорогие. Пустые таблицы с данными от процессов тормозить систему не будут, да и места тоже мало займут.
    По поводу безболезненности перехода на postgreSQL, да задача не совсем простая, штатно вы конечно конфигурацию сможете выгрузить и справочники тоже, но вот настройки придется руками воссоздавать, ну и сообщения с задачами, экземплярами процессов, документами придется повозиться, их тоже так просто не выгрузить. Но вопрос решаемый.
     
    Последнее редактирование: 2 апр 2017
  7. Адель

    Адель Member

    Ну я так примерно и думал, спасибо, что объяснили. В общем попробую очистить ленту и не грузить ничего лишнего в базу.
    Очень жаль, что нет нормального экспорта из системы данных (база клиентов со всеми взаимоотношениями и сделками в первую очередь).
     
  8. el-man

    el-man New Member

    А есть результаты тестирования аналогичных конфигураций на Postrge и Firebird?
     
  9. pushkarev

    pushkarev Active Member

    Сравнение производительности ELMA на этих 2 СУБД, я к сожалению не видел и сам не проводил. Но субъективно PostgreSQL быстрее, и работать с ней удобнее. Если говорить в целом о СУБД, то в интернете можно найти достаточно сравнений их быстродействия, вот например.
     
  10. Евгений

    Евгений New Member

    2 года на Элме.Также файрберд.
    Система тупит только на страницах где много скриптов самописных.Разор и портлеты.
    На всех остальных загрузка менее 1 секунды.
    Может вам в эту сторону глянуть.
     
  11. Адель

    Адель Member

    Менее 1 секунды? Это очень круто. У нас даже полностью чистая база такую скорость не выдаст. Какая конфигурация железа у сервера?
     
  12. Евгений

    Евгений New Member

    Processor Intel(R) Xeon(R) CPU E5630 @ 2.53GHz, 2533 Mhz, 4 Core(s), 8 Logical Processor(s)

    Очень сильный прирост получили когда на ssd диски ушли.
     
  13. Мы тоже получали значительный прирост производительности при переходе на SSD
     
  14. Клиентов экспортировать можно через стандартный экспорт/импорт конфигурации и экспорт/импорт через Excel. Для взаимоотношений и сделок думаю не сложно написать свой код для выгрузки и загрузки с помощью процессов.
     
  15. yambr

    yambr Member

    а вы уверены что дело именно в БД ? переходите на стандарт ms sql и проверьте весь код в процессах, у нас элма начала тормозить на ms sql express когда было уже почти 10 гб и 800 активных процессов(за 3 месяца) (с фаербердом сравнить не могу т.к. не пользовались) - перешли на версию стандарт ms sql - ресурсов стало больше и теперь проблем нет
     

Поделиться: