Oracle千萬級記錄操做總結

Oracle千萬級記錄進行處理並不簡單,下面就爲您總結了Oracle千萬級記錄插入和查詢的技巧,但願對您可以有所啓迪。數據庫

最近作了個項目,實現對存在Oracle千萬級記錄的庫表執行插入、查詢操做。原覺得對數據庫的插入、查詢是件很容易的事,可不知當數據達到百萬甚至千萬條級別的時候,這一切彷佛變得至關困難。幾經折騰,總算完成了任務。框架

一、防止運用 Hibernate框架htm

Hibernate用起來雖然方便,但對於海量數據的操做顯得力不從心。對象

關於Oracle千萬級記錄插入:資源

試過用Hibernate一次性執行 5萬條左右數據的插入,若ID運用 sequence方式生成,Hibernate將分5萬次從數據庫取得5萬個sequence,構形成相應對象後,再分五萬次將數據保存到數據庫。花了我十分鐘時間。主要的時間不是花在插入上,而是花在5萬次從數據庫取sequence上,弄得我至關鬱悶。雖而後來把ID生成方式改爲increase處理了疑問,但仍是對那十分鐘的等待心有餘悸。get

關於Oracle千萬級記錄查詢:table

Hibernate對數據庫查詢的主要思想仍是面向對象的,這將使許多咱們不需要查詢的數據佔用了大量的系統資源(包括數據庫資源和本地資源)。因爲對Hibernate的偏心,本着不拋棄、不放棄的做風,作了包括配SQL,改良 SQL等等的至關多的嘗試,可都以失敗了結,不得不忍痛割愛了。後臺

二、寫查詢語句時,要把查詢的字段一一列出表單

查詢時不要運用相似select * from x_table的語句,要儘可能運用 select id,name from x_table,以防止查詢出不需要的數據浪費資源。對於海量數據而言,一個字段所佔用的資源和查詢時間是至關可觀的。select

三、減小沒必要要的查詢條件

當咱們在作查詢時,經常是前臺提交一個查詢表單到後臺,後臺分析這個表單,然後執行查詢操做。在咱們分析表單時,爲了方便起見,經常喜歡將一些不需要查詢的條件用永真的條件來代替(如: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秒。

相關文章
相關標籤/搜索