Postgresql 是否可以将Hibernate配置为仅刷新而不提交(一种提交模拟)
我需要从具有旧模式(58个表)的旧postgreSql数据库迁移到具有新模式(40个表)的新数据库。模式完全不同。 这不是一个简单的迁移(复制和粘贴)。而是复制变换粘贴 我决定编写一个批处理并使用spring批处理、spring数据和jpa。所以我有两个数据源和一个链式传输。我的配置spring主要由chunck任务和一个JpaPagingItemReader和一个ItemWriterAdapter组成 为了满足性能需求,我还配置了Partitioner,它允许我将源表划分为几个子表,并且chunckSize=500000 一切顺利。但是考虑到我的旧表的大小,迁移所有数据需要一周的时间 我想做一个测试,它将包括运行我的批而不提交。只是hibernate在一个“.sql”文件中生成所有sql请求,但不将数据提交到数据库 这将允许我查看提交在执行时间上是否代价高昂 是否可以将hibernate配置为仅刷新而从不提交?一种提交模拟Postgresql 是否可以将Hibernate配置为仅刷新而不提交(一种提交模拟),postgresql,hibernate,spring-data-jpa,spring-batch,Postgresql,Hibernate,Spring Data Jpa,Spring Batch,我需要从具有旧模式(58个表)的旧postgreSql数据库迁移到具有新模式(40个表)的新数据库。模式完全不同。 这不是一个简单的迁移(复制和粘贴)。而是复制变换粘贴 我决定编写一个批处理并使用spring批处理、spring数据和jpa。所以我有两个数据源和一个链式传输。我的配置spring主要由chunck任务和一个JpaPagingItemReader和一个ItemWriterAdapter组成 为了满足性能需求,我还配置了Partitioner,它允许我将源表划分为几个子表,并且chu
Thank’s通常,代价高昂的部分是外键和唯一键检查以及索引维护,但由于您没有编写如何获取数据,很可能是您以低效的方式访问数据
一般来说,我建议您使用pg_dump创建一个转储,恢复该转储,然后尝试以仅SQL的方式进行迁移。这边没有数据需要流动,但可以留在机器上,这通常效率更高。
我想做一个测试,包括运行批处理而不提交。
:您是否尝试过使用ResourcelessTransactionManager
?我看到ResourcelessTransactionManager用于没有提交的批处理作业存储库中的记忆。我会看看是否可以在这个案例中使用它,然后再与您联系。因为我使用Hibernate作为JPA实现,所以我所有的数据都是延迟加载的。我只在需要的时候收集它们。那么,我不知道如何只在SQL中实现它。有很多数据转换操作(删除、合并、条件转换、重命名等)。它不是简单的复制和粘贴,而是数据的转换,因为旧基和新基之间的模式更为相同。旧格式的旧数据必须通过转换以新格式传输到新数据库。当然,但是猜猜看,SQL非常强大,可以为您完成这些转换。没有必要定制工作,尤其是我认为这将是一次性的事情?使用我建议的方法,您可以像这样做插入到新的_模式中。。。从old_schema.table1
,这样您就可以在选择项中转换来自源架构的数据。