百億條數據量的oracle資料庫優化?
12-29
接觸到一個Oracle 資料庫,總數據量數百億,最大表數據量數十億,已做過表分區,優化索引,歷史備份。平時沒什麼並發及連接數,最多也就5-10個。就一台伺服器和存儲,一般就是在Oracle BI上做展示,體驗極差,BI上刷新查詢一次非常慢。請問如何優化?如果要做更多開發和擴展,需要更換資料庫嗎?例如Mongodb?更換的話數據如何遷移?
Oracle資料庫優化可以從以下幾個方面入手:
1、引起資料庫性能問題的因素 (包括軟體代碼、系統架構、資料庫設計、SQL查詢等)
2、鎖和阻塞 Oracle 資料庫當中鎖的起因以及由鎖引起的性能問題-阻塞 比較常見
3、優化器 如果要分析SQL 的性能,就要了解Oracle優化器的機制
4、執行計劃 當我們分析一條SQL 的性能時,最先做的事情的大概就是要分析它的執行計划了。
5、Hints(提示) 通過人為的方式來約束SQL 的執行計劃,讓它按照我們希望的方式來執行,以達到我們需要的目的---改善性能或者僅僅是試驗以對比SQL 的執行性能
6、從表,表分區,索引等方面入手
7、可以把業務系統和報表系統分離開,即OLTP 和 OLAP 放到不同的伺服器上去實現
根據不同的業務做不同的聚集表來應對展現。比如,時間粒度可以做到按周、月、季、年聚集,地區可以做到按街道、區、縣、市、省聚集。每天晚上預加工好聚集表的數據,第二天查詢就很快了。
聽起來是一個data mart或小型dw系統。對這類系統來說,百億數據不算大,總量不過上百GB。實時性要求沒那麼高,可以考慮按照對應報表的要求對響應的查詢提前做物化試圖(MV)。
這資料庫不算大,常規而已,但是知乎上只能簡單的說說,找個sql專家優化下,盡量不要子查詢和函數。
另外一個原則,(可能會撕逼),在合理設計的情況下,查詢速度只和一個條件成相關性,如果沒有聚集函數,那麼,查詢速度只和的記錄數有關,和其他均無關。推薦閱讀:
※有哪些操作比較簡單的數據可視化系統?
※Tableau和QlikView的優點、缺點、區別?
※如何評價海致BDP這家公司?