asp+sqlserver 在海量資料操作的問題與解決思路
來源:互聯網
上載者:User
現有問題:
1, 所有記錄在一張表上。沒有分類
2, 開發時,由於沒有考慮這麼大量的資料。查詢語句放在程式中執行,造成速度過慢
3, 根據關係型資料庫的插入過程原理,每插入一次,建一次索引查詢,那麼,將佔用大量的記憶體與CPU資源,速度也將大大降低。在表中有100條記錄的情況下插入與在10000條記錄的情況下插入,速度與效率是完全不一樣的!
4, 插入與查詢是在同一張表裡。並發處理數可能峰值有1000多。
5, 根據關係型資料庫的查詢原理,如果有人要查詢記錄表,將會是這樣的一個數學運算式
一條記錄 <=1K
總共100,000條記錄,每天2萬的增長速度
如果不知條件,任意查詢,那將會是這樣:
(1K * 100,000)/1024 = 10M
1個人是10M。如果是200個人同時查,那將會是這樣:
200*10M = 2000M (約2G)
這樣大的資料被資料庫中取出來。並下載到本機查看,本來就是很龐大的。
6, 各輸入網點的網速很多還是“貓”上網,速度肯定跟不上。
7,伺服器中還存放著其它的資料等等。
7, 伺服器頻寬只是專線8M,就算伺服器的CPU能計算得過來,資料也送不出去,就被擠塞了!
由於上述問題,出現的情況如下:
1, 網站伺服器硬碟物理燒毀一塊。
2, 網站頻寬被完全佔用,基本難以訪問。
3, 網站頁面速度極其慢,資料轉送效率低。
4, 有些個輸入單位由於網速無法響應他的操作,送出的資料包無法返回,已無法完成記錄輸入。
解決辦法(思路):
1, 伺服器更新。(硬體上)
2, 網路頻寬增加。(硬體上)
3, 把查詢放在資料庫中進行,使用預存程序,但在百兆網速下,預存程序的應用基本與程式查詢沒什麼明顯區別。(軟體上)。
4, 插入記錄時,使用緩衝表,每10分鐘,將緩衝表向主記錄表倒一次資料。這樣可以緩解主記錄表的壓力。讓主記錄表專門應對查詢動作(軟體上)
5, 查詢時,使用文本讀出記錄,因為基於系統底層的指計移動,查詢效率將會提高100倍。但是需要FileObjectSystem組件支援。安全性要考慮。(軟體上)
如果不採取措施,會引起的問題:
資料庫不堪重負,硬碟會再次燒毀。
伺服器CPU一直處在100%滿負荷下運行。
程式系統完全崩潰。
資料無法即時插入,無法即時反應。
無法統計與追蹤。
各網站無法正常運行。