从databasechangelog读取Liquibase需要很长时间

时间:2012-06-13 12:14:01

标签: maven liquibase

有没有办法加快liquibase回滚和更新操作的maven任务?

我现在在db中有大约280个变更集,当我进行更新时,需要很长时间才能从databasechangelog中读取。

我正在使用liquibase 2和许多用于变更集的sql格式文件。 感谢

编辑:在执行时添加更具体的时间范围

INFO 11/16/12 10:46 AM:liquibase: Reading from databasechangelog
INFO 11/16/12 10:54 AM:liquibase: Successfully released change log lock

在这个例子中,它在MBP(核心i7,8 gig ram)上本地运行

3 个答案:

答案 0 :(得分:1)

我注意到了同样的事情。通过Maven使用它时,我看到如下:

[INFO] Executing on Database: jdbc:postgresql://localhost/mydb
INFO 11/5/12 1:01 PM:liquibase: Successfully acquired change log lock
INFO 11/5/12 1:01 PM:liquibase: Reading from databasechangelog
INFO 11/5/12 1:01 PM:liquibase: Reading from databasechangelog
INFO 11/5/12 1:02 PM:liquibase: ChangeSet mydb/db.changelog-006.sql::55::ebridges ran successfully in 41ms
INFO 11/5/12 1:02 PM:liquibase: Successfully released change log lock
INFO 11/5/12 1:02 PM:liquibase: Successfully released change log lock

请注意,总体而言,运行需要两分钟才能执行一个变更集,该变更集本身只需要41毫秒的执行时间。那很慢。

答案 1 :(得分:1)

在我的机器上,我复制了问题,主线程卡在本机方法上:

java.lang.Class.getGenericSignature()

这表明问题在于JDK实现。考虑升级或切换实施。

答案 2 :(得分:0)

在我的场景中,使用带有.csv文件的loadData是liquibase需要很长时间才能执行的原因(我正在使用liquibase 2.0.5)。

例如,这是一个导致liquibase减速的变更集:

<changeSet id="foo" author="bar">
    <comment>Baz</comment>
    <loadData encoding="UTF-8"
              separator=";"
              file="some-file.csv"
              tableName="TableName"/>
    <rollback>
        <sqlFile path="rollback.sql" relativeToChangelogFile="true" splitStatements="false" />
    </rollback>
</changeSet>