我使用spring的junit代码(这对我来说很方便)将1亿行插入表中
插入代码如下,DAO包装mybatis映射器
@Transactional
public void insert10Kcommit(){
System.out.println(TransactionSynchronizationManager.isActualTransactionActive());
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) { //0.1M
ShortUrl shortUrl = new ShortUrl();
String fullLink = SecureUtil.randomNumericString(20);
shortUrl.setFullLink(fullLink);
shortUrl.setPassCode(12345678L);
shortUrl.setEffStartTime(new Date());
shortUrl.setEffEndTime(new Date());
shortUrlDAO.create(shortUrl);
//ShortUrl newShortUrl = shortUrlDAO.get(shortUrl.getId());
//assertTrue(newShortUrl.equals(shortUrl));
}
count += 10;
System.out.println(count + " W is insertd. takes: " + (System.currentTimeMillis() - start) / 1000.0 + " s");
}
@Test
public void insert_100M(){
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 100; j++) {
insert10Kcommit();
}
}
}
以上代码片段需要6个小时才能完成向postgres 9.4插入1亿行,但在此之后,1亿行“消失”, 以下查询需要太长时间,似乎100米行中有一些只是postgres有问题。我重复了这个实验5次,结果都是一样的。
spring或dbcp2有什么问题吗?
任何人都可以帮助我吗?非常感谢。