Как ускорить выполнение Liquibase? - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно обновить схему из 20 баз данных с тем же журналом изменений Liquibase.Время, требуемое для создания схемы для одной пустой базы данных, составляет около 5 с.В последующем обновлении Liquibase для той же базы данных это все равно займет 3,6 с, даже если изменения не применяются.Поскольку обновление Liquibase выполняется 20 раз (один раз для каждой базы данных), итоговое общее время выполнения (100 и 72 с) либо для создания схемы, либо для проверки схемы является критическим для моего варианта использования.

Моя версия Liquibase равна 3,5.5, но я также попробовал версию 3.6.3, результаты которой даже немного хуже.

Я использую сценарий bash для перебора своих баз данных и выполнения обновления Liquibase.Это выглядит следующим образом:

for i in {1..5}; do
  liquibase --contexts=MT --logLevel=warning \
    --username=sa --password=XXX \
    --url="jdbc:sqlserver://<ip-address>:50179;DatabaseName=db$i" \
    --changeLogFile=/my-changelogs.xml \
    update
done

Есть ли способ сократить время выполнения Liquibase для одного обновления?В качестве альтернативы, возможно ли сократить общее время выполнения, запустив обновление Liquibase параллельно или загрузив путь к классам Liquibase только один раз?

1 Ответ

0 голосов
/ 11 апреля 2019

Вы можете запустить каждый процесс в фоновом режиме, используя & и nohup, что позволяет закрыть ваш терминал без закрытия процесса.

Результат будет

for i in {1..5}; do
  nohup liquibase --contexts=MT --logLevel=warning \
    --username=sa --password=XXX \
    --url="jdbc:sqlserver://<ip-address>:50179;DatabaseName=db$i" \
    --changeLogFile=/my-changelogs.xml \
    update &> nohup$i.out&
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...