亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 文庫 > 正文

數據庫 SQL千萬級數據規模處理概要

2020-10-29 21:53:56
字體:
來源:轉載
供稿:網友
1. 數據太多。放在一個表肯定不行。

比如月周期表。一個月1000萬,一年就1.2億,如此累計下去肯定不行的。所以都是基于一個周期數據一個表。甚至一個周期數據就要分幾個分表。主要是考慮實際的數據量而定。當你創建一個新表時,可能這個表需要有索引,但是都要先取消索引,或者先建立表,導入數據后,再建立索引。

必要時處理完,統計完后,就備份到磁帶或者其他介質。然后清掉。

從問題域來看,一個周期內的數據關聯性最大。比如統計一個客戶某個帳期的話單總額,同比上月增幅,還有就是零話費客戶等。如此種種,參照的數據不外乎本周期,或者兩個周期,甚至更多就是一個季度,或者半年的樣子(類似三個月連續零話費,或者三個月連續欠費未交之類的,保存量之類的報表可能會要一年的數據)。而且這樣的情況在數據挖掘或者高級管理報表中比較常見,一般營業部門使用的界面中,是不可能含有這樣的統計的。

所以數據按表分開,甚至于可以按數據庫分開,更便于管理。

大家要打消一種固有的思路,這些數據,跟環衛工人處理垃圾一樣,是幾乎有點帶人工處置的多步驟方式,也就是不會作為常規數據(如客戶基本資料等)長期存在和頻繁使用的。所以我們可以改變思路,就是想盡辦法,在需要的時候,做最佳處理,而在不需要時,清理掉它。也就是說,比如分表,你可以分100個表,1000個表都可以。只要方便統計和得到所需數據即可。

view只是說你能在寫select語句時簡單一點,對速度沒有任何提高。

主要是,你的分表的方式能建立減少訪問所有數據,就能提高速度。比如你做某個統計,那些數據恰好在某個分表內。舉例說,你有10個分部,而你統計id=1這個分部時,你恰好把數據放在第一個分表里,你就可以在存儲器內通過判斷,只訪問第一個分表,從而提高統計速度。如果你的統計需要統計全部分表內的數據,那處理速度還是一樣慢。

2. 假設每個表的數據在數十萬條,那統計起來是沒有任何瓶頸的。常規的數據庫都應該沒任何問題。

3. 預處理的必要性。

有人問:我統計一千萬條數據匯總,要多久多久,能否提高。。。試想你把中國人所有的存款加總,需要多長時間吧?看看這個問題的規模,其實再復雜的數據庫dbms,我們說他都逃不過:找出符合條件的數據,一條一條的加總這個計算過程。暫且不提where條件了。預處理的必要性在于,如此規模的數據處理,本身就是一個非常耗時的過程,我們有必要提前,處理其結果到一個表內,或者多個表里面。用戶查詢時,再顯示出來。比如說1000萬數據分10個分部,要看每個分部的應收增長,那我們可以預先統計數據到分部費用表中,則用戶端報表顯示時,就非???。如果任何數據匯總都要從原始數據去統計,那是不現實的。所以我們可以設置原始數據表,中間結果表,結果表,匯總表,月結表,期間表之類的東西。逐步統計歸屬。

另外要提的是,這樣的動作肯定非常耗時,而且!這樣的數據如果由服務器的存儲過程定期定時執行的話,處理的規模就只有一次,任何客戶端,都只從結果表里產生報表。如果不用此方法,任何客戶端報表都從原始數據產生,理論上是可以,但是這樣的千萬條數據匯總的處理會做N次。而且時間上也是不容許的。


還有,這樣的統計過程最好是分開db進行存放,而公用的數據比如客戶基本資料,最好拷貝一份到這個新db中來處理。這樣可以不干擾到正常的使用。

可以在晚上,或者另開db或者在另外的server上跑這個過程。處理完后,寫一個標志告訴主db,則客戶端可以統計這些報表了。

4. 對單行數據做計算字段。舉個例子,比如一條記錄的產生時間是2009-01-01 12:00:00.001,如果你的統計剛好需要對某個時段進行統計,那最好增加字段,比如hour字段,下一個批處理命令下去,取得小時數,然后再統計。


5. select語句中忌諱對column做函數。因為函數將導致查詢條件不走索引,而改走遍歷所有數據。這樣你就是查一條數據,也會遍歷所有數據,那豈不是可憐。


6. 條件盡量都是數字,也就是都用id,比如分部,鎮區,業務種類,接入類型,客戶地址,等等,都需要用到fk方式的編碼,主表里只用數字id,請記住是數字型id。整數型數字是計算最快的數據類型。如果金額極大,可以用decimal(小數=0)。varchar類型是效率很低的,不過好像有sql的md5算法,我想可以嘗試這個方法(我還沒試過)。


7. 索引,這個是海量數據查詢首要解決的問題。

沒有索引,就是遍歷。索引沒有覆蓋到,也會走遍歷。


8. 復雜的統計,用存儲器做分步處理,然后得到結果,同比一條select語句實現要輕松和明白得多。

而且對表的占用時間要短得多。當然,很復雜的統計可能要用到條件判斷,循環等,一條select語句是無法處理的。多層的where中的子句也是效率低,容易占用表的寫法。

原則上,這里我所討論的問題都不是那種基于網站內容管理的小case,主要對企業運用而言。比如舉例說查一個“存量客戶增幅表”,問題都不是簡單到直接對比兩個月的話費總額這么簡單,還得找出之前他的話費如何,比如超過多少錢的才列入統計對象。所以,我的理解:復雜的問題,必須存儲過程。真正做過幾個項目才會明白,寫sql語句會比編程代碼還要多。真正的程序,其實是sql。

最后說一句,如果經驗足夠豐富,寫出的統計過程,其執行時間在數分鐘甚至幾個小時都是正常的。所以初學者應該明白,數據量是與處理時間成正比的。如果平時處理幾條數據感覺很快,數據量猛然增加幾個數量級,不要認為時間上還能優化到幾秒鐘。


ERP里的MRP展開計算,通常能到幾個小時的。這都是正常的。(主要是物料多,bom多,計算步驟太多造成)

9. 補充一點。如果數據量超過我們標題的千萬級,甚至幾十億數量級。那也不存在問題,還是分而治之的思路,就是把數據在多臺服務器上并行運行。就好像為災區捐款一樣,靠一個人的力量是不行的。人多力量大。類似數據分揀之類的,只需要原始數據和基本資料,還有一些計費策略之類的。完全可以分布在多臺server上同時處理,也是必要的。主要根據你的數據量和單臺處理的速度以及你要求的總的處理時間而決定的。有人說select語句難道也需要分布?只能說,如果確實有必要,也能做到。比如你要返回所有話單異常的數據,那也可以從每臺執行檢索,然后匯合到一起,我想是可以的。

總而言之:

一。合理設計表結構,使得統計匯總最高效(包括fk設計和用數字id,不用varchar,索引設計,計算字段);

二。合理分表,使得單表數據規模適當;

三。用存儲器分多個步驟處理。

四。數據預先處理。

五。分布在多臺server上同時處理。

也就是分而治之與預處理。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区在线视频播放| 91精品国产免费久久久久久| 96精品视频在线| 色香阁99久久精品久久久| …久久精品99久久香蕉国产| 在线视频免费一区二区| 免费不卡欧美自拍视频| 国产精品wwww| 欧美视频在线视频| 欧美性高跟鞋xxxxhd| zzijzzij亚洲日本成熟少妇| 国产精品视频xxx| 国产精品久久久久久久久久久新郎| 欧美成人免费小视频| 久久国产精品99国产精| 亚洲三级黄色在线观看| 日韩精品在线视频观看| 成人福利视频网| 国产精品中文字幕在线观看| 国产精品一区二区三区免费视频| 亚洲欧美色婷婷| 中文字幕久精品免费视频| 亚洲片在线资源| 日本欧美爱爱爱| 成人av电影天堂| 欧美日韩亚洲91| 精品国产户外野外| 九色成人免费视频| 91在线视频一区| 欧美日韩性视频| 国产成人激情视频| 国色天香2019中文字幕在线观看| 欧美视频在线看| 亚洲色图日韩av| 自拍偷拍免费精品| 日本成人精品在线| 国产精品久久久久久久久久久不卡| 国产精品视频公开费视频| 日韩中文字幕在线视频播放| 国产女人18毛片水18精品| 97精品在线观看| 日韩在线免费高清视频| 欧美性猛交xxxx| 久久久之久亚州精品露出| 久久视频在线视频| 国产欧美日韩专区发布| 日本欧美国产在线| 黄色成人在线免费| 日韩毛片中文字幕| 亚洲精品久久久久中文字幕二区| 日韩精品极品毛片系列视频| 97色在线观看免费视频| 日韩中文字幕视频在线| 国产日韩欧美另类| 色综合五月天导航| 日韩免费av片在线观看| 国自产精品手机在线观看视频| 亚洲男人天堂古典| 欧美一二三视频| 亚洲色图日韩av| 亚洲欧美激情精品一区二区| 欧美xxxx综合视频| 日韩欧美国产骚| 国产精品亚洲片夜色在线| 91色精品视频在线| 亚洲iv一区二区三区| 国产成人精品久久| 亚洲欧美国产制服动漫| 国产91色在线| 国产99视频精品免视看7| 精品久久久在线观看| 亚洲xxxxx电影| 国产成人拍精品视频午夜网站| 中文字幕欧美精品日韩中文字幕| 国产小视频国产精品| 亚洲国产成人久久综合| 亚洲欧美一区二区精品久久久| 亚洲视频在线免费看| 亚洲第一级黄色片| 国产亚洲美女久久| 欧美在线影院在线视频| 高清欧美性猛交| 日韩免费观看网站| 中文字幕亚洲欧美日韩高清| 亚洲精品第一国产综合精品| 国产精品久久网| 精品国产电影一区| 欧美一级片在线播放| 欧美精品在线网站| 亚洲精品v天堂中文字幕| 成人日韩av在线| 91美女高潮出水| 欧美日韩精品二区| 精品国产户外野外| 欧美一级片在线播放| 久久成人在线视频| 国产精品久久久久免费a∨大胸| 国产精品入口免费视| 国产精品aaaa| 欧美日韩成人在线视频| 精品亚洲一区二区三区四区五区| 久久国产一区二区三区| 久久久久免费视频| 国产亚洲一区二区在线| 亚洲激情小视频| 日韩精品在线观看视频| 欧美xxxx18性欧美| 日韩激情片免费| 欧美在线播放视频| 亚洲精品国产精品久久清纯直播| 2019亚洲男人天堂| 日韩在线观看你懂的| 日韩电影中文字幕在线观看| 亚洲高清免费观看高清完整版| 精品少妇v888av| 欧美精品激情在线| 久久精品国产精品| 亚洲毛片在线看| 欧美黄色性视频| 国产亚洲视频在线观看| 亚洲精品国产电影| 中日韩美女免费视频网站在线观看| 97热在线精品视频在线观看| 久久久久日韩精品久久久男男| 国产综合在线视频| 国产精品自拍网| 久久99国产精品久久久久久久久| 国产v综合v亚洲欧美久久| 国产九九精品视频| 1769国内精品视频在线播放| 亚洲成人av在线| 国产亚洲人成网站在线观看| 欧美日韩中文字幕| 亚洲人成在线电影| 亚洲影院污污.| 国产一区二区成人| 国外成人免费在线播放| 国产精品热视频| 久久久欧美精品| 在线午夜精品自拍| www.99久久热国产日韩欧美.com| 久久国产精品首页| 97不卡在线视频| 欧美在线视频在线播放完整版免费观看| 国产成人av网址| 日本一区二区在线免费播放| 亚洲国产精品久久久| 日韩免费观看网站| 国产精品av电影| 亚洲精品日韩在线| 日韩电视剧在线观看免费网站| 亚洲在线视频观看| 日韩精品视频在线观看免费| 国产精品久久久久久久app| 蜜臀久久99精品久久久无需会员| 97在线视频免费看| 日韩中文字幕在线视频播放| 久久久国产精彩视频美女艺术照福利| 久久久久九九九九| 欧美日韩xxx| 日韩大陆欧美高清视频区| 亚洲二区在线播放视频| 欧美成人激情视频免费观看| 欧美大片免费看|