如何加快Liquibase的执行速度?

时间:2019-04-10 15:13:11

标签: liquibase query-performance

我必须使用相同的Liquibase更新日志更新20个数据库的架构。为一个空数据库创建模式所需的时间约为5s。在同一数据库上的后续Liquibase更新中,即使没有应用任何更改,仍然需要3.6秒。 由于Liquibase更新执行了20次(每个数据库一次),因此对于模式创建或模式验证而言,最终的总体执行时间(100s和72s)对于我的用例至关重要。

我的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 :(得分:0)

您可以使用&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