相关疑难解决方法(0)

在Postgres中批量插入的最快方法是什么?

我需要以编程方式将10百万条记录插入到postgres数据库中.目前我在一个"查询"中执行1000个插入语句.

有没有更好的方法来做到这一点,我不知道一些批量插入语句?

postgresql bulkinsert

219
推荐指数
9
解决办法
25万
查看次数

使用JDBC进行批量INSERTS的有效方法

在我的应用程序中,我需要做很多插入.它是一个Java应用程序,我使用普通的JDBC来执行查询.数据库是Oracle.我已启用批处理,因此它可以节省执行查询的网络延迟.但是查询作为单独的INSERT串行执行:

insert into some_table (col1, col2) values (val1, val2)
insert into some_table (col1, col2) values (val3, val4)
insert into some_table (col1, col2) values (val5, val6)
Run Code Online (Sandbox Code Playgroud)

我想知道以下形式的INSERT是否可能更有效:

insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)
Run Code Online (Sandbox Code Playgroud)

即将多个INSERT折叠成一个.

使批量INSERT更快的任何其他技巧?

java sql performance jdbc

59
推荐指数
4
解决办法
10万
查看次数

Spring,Hibernate交易.在A中创建的线程B中加入一个事务可能吗?

是否可以在另一个线程中使用事务?

就像传递线程A中创建的事务然后在同一事务中的线程B中执行一些逻辑一样?

我有两个队列和单独的执行器来处理某些实体类型的填充.

但是,批处理作业正在管理两个人口并等待每个人员完成.这将是不必要的创建两个交易.如果一个失败,理想情况下我希望回滚所有数据,这样就可以将它们作为一个事务运行,并且它可以提供更好的性能.

那么,是否可以创建一个事务,将其传递给另一个线程,在第一个事务的边界内执行一些事情?

我正在使用Spring和Hibernate并且目前正在使用

TransactionTemplate template = new TransactionTemplate( getTransactionManager() );
template.setPropagationBehavior(propagationBehavior);
template.setReadOnly(readOnly);

TransactionStatus status = getTransactionManager().getTransaction(template);
Run Code Online (Sandbox Code Playgroud)

创建一个事务,根本不使用注释,也没有计划这样做.

spring hibernate transactions jta java-ee

4
推荐指数
1
解决办法
1330
查看次数