enb下包含多個檔案,我們需要解析這樣的資料到資料庫中,**用端計算分析使用。之前,我們已經採用了分表方案,分表分為乙個主表,三個子表。每乙個enb一套表。
解析業務:
每取到乙個檔案就讀取為乙個實體集合到記憶體中,當乙個檔案讀取完成後,調入庫介面;在入庫時,先把這個實體集合拆分為主表的datatable物件,三個子表的datatable物件,之後並行入庫。
基於上邊的一共包含兩個弊端問題:
記憶體占用高:我們先讀取為乙個實體集合,之後轉化為4個datatable物件才能進行入庫,這個過程相當於記憶體中的資料量成倍的增加了,空間也比最小化記憶體多了幾倍。
入庫速度不高:由於入庫表過多,而且連線數也有限,網路頻寬成為瓶頸,雖然分表了,但是處理乙個enb時,需要寫入4個物理表;如果並行16個enb,則會有16enb*24檔案*4表次連線寫入,過多的連線對sqlserver資料庫也沒有好處,寫入檔案過於分散也使得資料庫吞吐量提不高。
分表改進:
把原來的分為一套表(乙個主表,三個子表)方案修改為乙個表,避免過多表同時要求寫入影響資料庫io吞吐量;
解析業務調整:
每取到乙個檔案就讀取為乙個datatable到記憶體中,當乙個檔案讀取完成後,調入庫介面;在入庫時,直接把datatable物件入庫。
資料庫連線池滿問題:
針對該問題,我們把所有的資料操作盡可能使用乙個連線,避免並行開啟過多連線,盡量使得乙個enb處理過程中只使用乙個資料庫連線,同乙個enb處理過程中,盡量序列處理。
通過加大並行處理enb數量,來提高cpu,memory,io利用率。
資料庫調優過程(五) 物理分表,及寫入方案調整
enb下包含多個檔案,我們需要解析這樣的資料到資料庫中,用端計算分析使用。之前,我們已經採用了分表方案,分表分為乙個主表,三個子表。每乙個enb一套表。解析業務 每取到乙個檔案就讀取為乙個實體集合到記憶體中,當乙個檔案讀取完成後,調入庫介面 在入庫時,先把這個實體集合拆分為主表的datatable物...
資料庫調優教程(十一) 設計一張漂亮的表
上一章講了如何通過索引來提速我們的查詢語句,這一章讓我們回到資料庫開發的初始階段,建表。談談怎樣設計一張漂亮的表。1.滿足三正規化 1nf 即表的列的具有原子性,不可再分解,即列的資訊,不能分解,只要資料庫是關係型資料庫 mysql oracle db2 informix sysbase sqlse...
一次SQL調優資料庫效能問題後的過程 300W
將絕大部分的sql查詢改為儲存過程,這樣的操作毫無疑問可以提高部分效能。凡是使用 select from 的操作一律具體到所需欄位。使用join連線2個以上大量資料的表,且基礎資料表變化不大的查詢一律使用檢視,並為此檢視建立索引。理由來自sql server聯機幫助手冊 對於標準檢視而言,為每個引用...