高併發操做和查詢的數據採集和查詢系統的oracle數據庫設計建議

1使用分佈式垂直切分。因爲已經使用了Oracle RAC 提供分佈式的集羣服務。因此對於產生大數據和高併發的表,能夠採用數據庫垂直分片(好比1-500號集中器的數據採集到數據庫A500-1000B)。數據分片,是將總體數據分攤在多個存儲設備上,這樣每一個存儲設備的數據量相對就會小不少,以此知足系統的性能需求。分區能夠提升可管理性、性能與可用性,從而給各類各樣的應用程序帶來極大的好處。固然一個合理的分片策略是最關鍵的。不當的分片策略有可能反而帶來性能的降低。數據庫

2使用主從表。主從複製、讀寫分離,減小生產系統壓力。也就是說,對應須要頻繁進行寫操做的數據表,爲該表設置從表。每5分鐘將主表數據同步到從表。全部查詢的操做都對從表進行。這樣寫操做針對主數據庫表,讀則是從從數據庫。雖然讀操做略有延遲,由於集中器自己就是20分鐘提交一次數據,因此只要同步時間在20分鐘之內,對數據的實時性並不會產生大的影響。可是這樣大大提升了檢索的效率。緩存

3使用分區表。避免一個表過大,當期數據與歷史數據分離,提高存儲和處理效率。服務器

雖然Oracle單張表的最大記錄條數十3.6E+17。但一個表一旦數據量達到必定規模。性能方面必定會出現問題。經過使用分區表,將當期數據與歷史數據分離,這樣是能夠大大提升檢索和操做的效率的。併發

在分區表的基礎上進行數據存檔是對過時的數據進行分開存儲,固然存儲的時間根據實際需求制定。這須要對數據以及應用程序對數據的使用狀況,有很是充分的瞭解。好比電子商務公司的大數據處理只將3個月內的數據存入活躍數據庫,而舊訂單則被存入單獨的存儲。這個途徑一樣能夠運用於抄表系統的數據倉庫。固然能夠存儲更多的近期數據用於報告和查詢,使用頻度少的數據能夠被存入單獨的存儲設備。分佈式

4按期進行數據清除。有時候咱們一直忙於收集數據而不清楚究竟須要保存多少數據,若是你存儲了很是多用不到的數據,那麼這將毫無疑問的下降你有效數據的處理速度。在業務需求的基礎上審查數據是否能夠被刪除,從中分析出須要儲存數據的類型,不只會節省存儲空間,一樣會提高有效數據的分析速度。主要的方法是給數據倉庫創建附加列,好比created_datecreated_byupdate_dateupdated_by。經過這些附加列能夠對數據進行階段性的訪問統計,這樣就能夠清楚數據的有效週期。這裏須要着重對待的是數據清除的邏輯。比較好的是Oracle自身就具有了強大的歸檔能力,執行alter database archivelog;便可將數據庫設置成archive log modeOracle將會自動歸檔。memcached

5使用memcached緩存系統Memcached是一個通用的分佈式內存緩存系統,主要用於減小動態應用的數據庫負載,提高訪問數據庫的速度,它具備高性能和分佈式等優勢。。因爲Memcached能夠有效減小Web站點數據庫的負載,它已經成爲目前主流的互聯網網站所採用的緩存解決方案。Memcached已是一種很是成熟的緩存解決方案產品,它被普遍應用於負載大、並行程度高的網站之上,許多著名的網站,如FacebookSina、豆瓣等都在其網站實現中或多或少的使用了Memcached產品。經過使用Memcached緩存系統能夠大大提升服務器的響應速度。在用戶數據也都比較複雜、用戶數據之間的關聯度也比較高、並且須要對數據庫進行頻繁的更新或檢索操做,採用Memcached機制正好能夠很好的解決這些問題。高併發

6使用物化視圖。Oracle的物化視圖提供了強大的功能,能夠用於預先計算並保存錶鏈接或彙集等耗時較多的操做的結果,這樣,在執行查詢時,就能夠避免進行這些耗時的操做,而從快速的獲得結果。增長和刪除物化視圖不會影響應用程序中SQL語句的正確性和有效性;物化視圖須要佔用存儲空間;當基表發生變化時,物化視圖也應當刷新。性能

7使用數據冗餘化設計。經過數據庫字段的冗餘化設計,減小表間鏈接查詢。大數據

在插入數據的時候,在多個表內生成同種字段的數據,從而使得在查詢時,減小錶鏈接的格式,從而可以提升查詢的效率,減輕數據庫的查詢負荷。優化

8合理使用索引。支持混合索引機制,集成BitmapB-Tree技術。經過索引的合理設置,能夠大大提升查詢效率。好比Bitmap索引比較適合決策支持系統,由於它雖然更新比較耗時。但對靜態數據查詢效率很是高。而B-tree 索引很適合 OLTP 應用程序,由於OLTP 系統常常更新和刪除。

9SQL優化。查詢時,避免子查詢,少用模糊匹配,少用*,不要union等;操做時,避免長事務,長鎖,用行鎖定替代頁鎖定等。

相關文章
相關標籤/搜索