一次执行多个语句

时间:2012-06-05 14:59:42

标签: flyway

从我看到的情况来看,Flyway在给出带有一些语句的SQL文件时会逐个执行它们;作为分隔符(这是我从SqlScript.execute()中理解的)。由于这种应用,远程服务器上的补丁需要花费大量时间,因为文件的每个语句都是单独发送的。

我想知道是否可以进行批量更新"通过将整个文件一起发送然后立即应用它。或许这是我们在这里遇到的一些JDBC约束?

1 个答案:

答案 0 :(得分:2)

你的观察是正确的。

Flyway目前在单个语句中拆分文件,然后使用JDBC将其发送到DBMS。

一些DBMS Jdbc驱动程序,例如来自H2和PostgreSQL的驱动程序,实际上本身支持每个jdbc调用发送多个语句。

我选择不使用此功能的原因是您交易错误报告质量以获得潜在的性能提升。最重要的是,此解决方案仅适用于少数用户。

批量更新确实可以解决此问题的跨DBMS解决方案。由于潜在的规模爆炸和收益递减规律,对整个文件进行批处理可能并不理想。批量处理一些陈述(比如20,50,或者其他任何最佳点)都证明是有价值的。这不应该对代码造成太大影响。如果错误报告质量(哪个语句失败)没有受到明显影响并且性能改进可见,那么添加它应该是一个明智的选择。

如果您希望看到此支持,请在问题跟踪器中提出问题。