Oracle千万条记录插入与查询小结-开辟技术[Oracle防范]
本文“Oracle千万条记录插入与查询小结-开辟技术[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
近来做了个项目,实现对存在千万条记录的库表举行插入、查询操作.原认为对数据库的插入、查询是件很简单的事,可不知当数据到达百万乃至千万条级别的时刻,这一切仿佛变得相当艰难.几经折腾,总算完成了任务.
1、 避免利用Hibernate框架
Hibernate用起来固然便利,但关于海量数据的操作显得力不从心.
关于插入:
试过用Hibernate一次性举行5万条左右数据的插入,若ID利用sequence方法生成,Hibernate将分5万次从数据库获得5万个sequence,构造成呼应对象后,再分五万次将数据保存到数据库.花了我非常钟时间.主要的时间不是花在插入上,而是花在5万次从数据库取sequence上,弄得我相当忧郁.固然后来把ID生成方法改成increase办理了问题,但还是对那非常钟的等候心有余悸.
关于查询:
Hibernate对数据库查询的主要思惟还是面向对象的,这将使很多我们不需求查询的数据占用了大量的系统资源(包含数据库资源和本地资源).由于对Hibernate的偏心,本着不丢弃、不放弃的作风,做了包含配SQL,改良SQL等等的相当多的尝试,可都以失利告终,不得不忍痛割爱了.
2、 写查询语句时,要把查询的字段一一列出
查询时不要利用近似select * from x_table的语句,要尽大概利用select id,name from x_table,以避免查询出不需求的数据浪费资源.关于海量数据而言,一个字段所占用的资源和查询时间是相当可观的.
3、 削减不必要的查询条件
当我们在做查询时,常常是前台提交一个查询表单到后台,后台解析这个表单,此后举行查询操作.在我们解析表单时,为了便利起见,常常喜好将一些不需求查询的条件用永真的条件来替换(如:select count(id) from x_table where name like ‘%’),其实这样的SQL对资源的浪费是相当可怕的.我试过关于一样的近一千万条记录的查询来说,利用select count(id) from x_table 举行表查询需求11秒,而利用select count(id) from x_table where name like ‘%’却花了33秒.
4、 避免在查询时利用表衔接
在做海量数据查询时,应尽大概避免表衔接(分外是左、右衔接),万不得已要举行表衔接时,被衔接的另一张表数据量一定不能太大,若衔接的另一张表也是数万条的话,那预计可以考虑重新计划库表了,因为那需求等候的时间决不是正常用户所能忍耐的.
5、 嵌套查询时,尽大概地在第一次select就把查询范围缩到最小
在有多个select嵌套查询的时刻,应尽大概在最内层就把所要查询的范围缩到最小,能分页的先分页.很多时刻,就是这样简单地把分页放到内层查询里,对查询效率来说能形成质的改变.
就是这些了,但愿对碰到近似问题的朋友们能有所帮忙!
以上是“Oracle千万条记录插入与查询小结-开辟技术[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |