Java Web項目如何提高訪問效率

來源:互聯網
上載者:User

通常大型應用項目的效率瓶頸一般都是在資料庫

總結幾點資料庫效率最佳化方面應該注意的問題

1、 避免使用Hibernate架構

用Hibernate一次性進行5萬條左右資料的插入,若ID使用sequence方式產生,Hibernate將分5萬次從資料庫取得5萬個 sequence,構造成相應對象後,再分五萬次將資料儲存到資料庫。花了我十分鐘時間。主要的時間不是花在插入上,而是花在5萬次從資料庫取 sequence上,弄得我相當鬱悶。雖然後來把ID產生方式改成increase解決了問題,但還是對那十分鐘的等待心有餘悸。 

 

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、在做海量資料查詢時,應盡量避免表串連(特別是左、右串連),萬不得已要進行表串連時,被串連的另一張表資料量一定不能太大,若串連的另一張表也是數萬條的話,那估計可以考慮重新設計庫表了,因為那需要等待的時間決不是正常使用者所能忍受的。

 

以前做過一個銀行分析系統,資料量是億層級的。補充幾點

1,怎樣造Java對象。有句話說得好:儘可能的少造對象。別說千萬級,就是上萬級都不要考慮造對象了。因為幾個請求一併發,喀嚓,系統肯定完蛋。
2,合理擺正系統設計的位置。大量資料操作,和少量資料操作一定是分開的。大量的資料操作,肯定不是ORM架構搞定的。絕對不能ORM,因為1,要少造對象;2,資料庫資源合理利用。id分配就是一個好例子。
3,合理利用資料庫的分區、索引技術。
4,有的時候可以考慮暫存資料表之類的,尤其是大資料量。
5,有人說非常大的資料量,一定要用預存程序。我預存程序不好,所以還是使用jdbc,哈哈效果非常好,所以除了上面幾點注意外,還要注意:
   1,控制好記憶體,讓資料流起來,而不是全部讀到記憶體再處理,而是邊讀取邊處理;
   2,合理利用記憶體,有的資料要緩衝;
   3,偶承認,這裡技術含量還是有的,反正不簡單。不好言傳。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.