有什么方法可以加快 liquibase 回滚和更新操作的 maven 任务吗?
我现在在数据库中有大约 280 个变更集,当我进行更新时,仅从数据库更改日志中读取就需要很长时间。
我正在使用 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千兆的ram)
我注意到了同样的事情。 通过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 毫秒的执行时间。这很慢。
在我的机器上,我复制了问题,主线程卡在本机方法上:
java.lang.Class.getGenericSignature()
这表明问题出在 JDK 实现上。考虑升级或切换实现。
在我的场景中,将loadData
与 .csv 文件一起使用是 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>
就我而言,这是因为一张上锁的桌子。我在另一个应用程序中有一个待处理的事务。