hibernate ORACLE数据库 SEQUENCE主键 批量插入时速度慢
每次session.save时 都会执行select Tf45_NUM.nextval from dual 去读序列.我猜测是HIBERNATE为了填充主键(我的猜测) 批量保存时速度很快 基本一瞬间就完成了 现在保存3000条数据 很卡很卡 大部分时间都浪费在 select Tf45_NUM.nextval from dual 这句话上了有什么好办法吗
追问:我的设置的是100 貌似跟这个没关系吧 sequence的cache是用完了再扩充上限 但我这边还是一个一个往里加的您好我明白您的意思 因为我是远程访问数据库所以 网络原因导致 select test_num.nextval from dual这个动作已经不能忽略了 而占到了绝大多数的耗时比例 具体执行这句话后数据库如何分发序列 那时间损耗 我完全可以接受的 现在我的目的就是如何避免 每次在session.save()时 执行select test_num.nextval from dual 而是直接在做插入时 insert into table1 values(test_num.nextval,?,?)这样 避免一次不必要的查询
答案:那你可以通过手动指定填充主键,不要用hibernate的自增主键方式,可以自己通过程序来控制主键的增长策略
其他:将序列号的 cache 调大一些。
比如100
默认是20
看你的是多少?
上一个:oracle在一个机器上建立2个数据库。需要建立几次监听
下一个:在oracle数据库中,需要临时创建一个表来使用,能否将该表创建在临时表空间中?