999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談海量數(shù)據(jù)處理技巧

2011-08-15 00:52:53張占杰
科技傳播 2011年2期
關(guān)鍵詞:程序數(shù)據(jù)庫

張占杰

天津天士力國際營銷控股有限公司,天津 300402

1 數(shù)據(jù)源的處理

1.1 文本數(shù)據(jù)導(dǎo)入到SQL Server數(shù)據(jù)庫中

主要有以下3種方式:

方式一:通過程序從文本格式的數(shù)據(jù)中每整理出一條記錄就執(zhí)行insert語句插入到SQL數(shù)據(jù)庫中;

方式二:通過程序從文本格式的數(shù)據(jù)中整理出多條記錄,再批量執(zhí)行insert語句插入到SQL數(shù)據(jù)庫中;

方式三:編寫存儲過程,把這些從文本格式的數(shù)據(jù)通過存儲過程導(dǎo)入到SQL數(shù)據(jù)庫中。因為,存儲過程提供了許多標(biāo)準(zhǔn)SQL語言中所沒有的高級特性。其傳遞參數(shù)和執(zhí)行邏輯表達(dá)式的功能,有助于應(yīng)用程序設(shè)計者處理復(fù)雜任務(wù)。另外,這些過程存儲在本地SQL服務(wù)器上,減少了執(zhí)行該過程所需的網(wǎng)絡(luò)傳輸帶寬和執(zhí)行時間。

1.2 數(shù)據(jù)庫的設(shè)計

1.2.1 數(shù)據(jù)的分表存儲

在諸多應(yīng)用系統(tǒng)的數(shù)據(jù)庫中,例如,淘寶中店家的銷售記錄、買家的購買記錄、北美貿(mào)易數(shù)據(jù)、醫(yī)院醫(yī)生的接診數(shù)據(jù)等等,這些數(shù)據(jù)都有時間這一維度。以北美貿(mào)易數(shù)據(jù)為例,每月的北美海關(guān)貿(mào)易數(shù)據(jù)至少上百萬條,一年的數(shù)據(jù)量至少在千萬條以上。試想,假如系統(tǒng)要搜尋某個月份,某一HS號的產(chǎn)品出口信息,實際最后所得的數(shù)據(jù)量可能僅僅是幾百條甚至更少只有幾條。那么,如果從一百萬條數(shù)據(jù)里搜尋這些,和在上千萬條數(shù)據(jù)里搜尋,他們的返回結(jié)果時間必然是不同的。同樣,修改記錄時,數(shù)據(jù)庫也是要先找到滿足條件的記錄,然后再進(jìn)行update操作。所以,建議處理這類數(shù)據(jù)時候,應(yīng)該按照時間這一維度,把數(shù)據(jù)分表存儲。這樣,可以減少大量的查詢時間,數(shù)據(jù)量越龐大,效果越明顯。

1.2.2 對海量數(shù)據(jù)進(jìn)行分區(qū)操作

對海量數(shù)據(jù)進(jìn)行分區(qū)操作十分必要,例如針對按年份存取的數(shù)據(jù),我們可以按年進(jìn)行分區(qū)。例如SQL Server的數(shù)據(jù)庫分區(qū)是將不同的數(shù)據(jù)存于不同的文件組下,而不同的文件組存于不同的磁盤分區(qū)下,這樣將數(shù)據(jù)分散開,減小磁盤I/O,減小了系統(tǒng)負(fù)荷,而且還可以將日志、索引存放于不同的分區(qū)下。

1.2.3 創(chuàng)建索引

1)索引的優(yōu)點和局限索引可以提高查詢的效率,但會降低dml操作的效率。所以建立索引時需要權(quán)衡。對于dml操作比較頻繁的表,索引的個數(shù)不宜太多;

2)什么樣的列需要建索引經(jīng)常用于查詢、排序和分組的列(即經(jīng)常在where、order或group by子句中出現(xiàn)的列);

3)主鍵索引和復(fù)合索引對于一張表的主鍵,系統(tǒng)會自動為其建立索引。如果一張表的幾列經(jīng)常同時作為查詢條件,可為其建立復(fù)合索引;

4) 建 立 索 引 的 語 句 create index i_staff on staff (empno);create index i_agent on agent (empno, start_date);

5)刪除索引的語句 drop index I_staff;drop index I_agent;

6)索引的一些特點:

(1)不同值較多的列上可建立檢索,不同值少的列上則不要建。比如在雇員表的“性別”列上只有“男”與“女”兩個不同值,因此就沒必要建立索引。如果建立索引不但不會提高查詢效率,反而會嚴(yán)重降低更新速度。

(2)如果在索引列上加表達(dá)式,則索引不能正常使用

例如:b1是表b的索引列

select * from b where b1/30< 1000 ;這是不正確的寫法where子句中如果使用in、or、like、!=,均會導(dǎo)致索引不能正常使用

例如:select * from b where b1=30 or b1=40;

1.2.4 創(chuàng)建索引表

除對數(shù)據(jù)表的相應(yīng)列上創(chuàng)建索引、復(fù)合索引,我們還可以給數(shù)據(jù)表創(chuàng)建 “索引表”。

例如,當(dāng)需要進(jìn)行模糊查詢的時候,我們一般采取的解決辦法是 執(zhí)行sql語句 like

select * from table where 某列 like ‘%×××××%’,這樣如前所述,即便該列已經(jīng)加了索引,在進(jìn)行l(wèi)ike查詢時候,索引也起不到任何作用。那么,這種情況,應(yīng)該怎么處理呢?

我們以搜尋北美數(shù)據(jù)為例,假設(shè)一個表中存有一百萬條數(shù)據(jù),那么我們可以設(shè)計這個表有一個pk_id列(長整型)來唯一標(biāo)識一條記錄。表中存在一列是描述信息列。該列的內(nèi)容都是 英文字母。這樣,我們通過程序,先將該月數(shù)據(jù)進(jìn)行處理,創(chuàng)建26套索引表,每個索引表有兩個列,一列(sKey)存放關(guān)鍵字,一列(sID)存放這些關(guān)鍵字在數(shù)據(jù)主表中出現(xiàn)的那些記錄的pk_id(以某一特定分隔符來分割表示。 例如 第 1、3、5 這3條記錄中存在關(guān)鍵字“TOY” 那么在 T索引表中有這樣一條記錄,TOY1,3,5)。這樣,如果程序要搜索關(guān)鍵字是 “TOY” 的信息記錄。執(zhí)行過程是這樣的:首先從T索引表中,用 “Select top 1 sID from T索引表 where sKey =’TOY’ ” ,然后得到主數(shù)據(jù)表中的 pk_id 為 1、3 、5 這三條記錄 是含有關(guān)鍵字“TOY”的記錄。這時,再執(zhí)行 “select * from mainData where pk_id in(1,3,5)”,得到所需數(shù)據(jù)。經(jīng)過實際測試 ,用上述方法,比直接采用 “select * from mainData where 描述信息列 like ‘%TOY%’”方式,系統(tǒng)返回結(jié)果的時間要快十倍以上,特別是在單表數(shù)據(jù)量超過百萬后,效果更佳突出。

2 程序設(shè)計的一些技巧

2.1 界面顯示進(jìn)度

當(dāng)程序處理大量數(shù)據(jù)的時候,往往系陷入“假死”狀態(tài)。這時,很多用戶會覺得系統(tǒng)很慢、已經(jīng)導(dǎo)致死機(jī)等。遇到類似情況,在程序在設(shè)計時候,可以在程序界面上,顯示處理的進(jìn)度。一般采用進(jìn)度條或處理比例(已處理數(shù)量/總數(shù)量) 這樣的方式展現(xiàn),并實時刷新數(shù)據(jù),這樣,用戶從程序界面上,看見有不斷的數(shù)字變化,從心里上有種感覺,程序在飛速處理著數(shù)據(jù)。

對實時刷新數(shù)據(jù)的一個竅門:很多時候,程序設(shè)計了實時刷新界面的信息,但由于后臺正在處理大量的數(shù)據(jù),導(dǎo)致了cpu時間沒有分配給刷新程序界面。這時候程序一樣是假死的狀態(tài)。此時,可以在刷新界面數(shù)據(jù)的語句后面加上轉(zhuǎn)讓控制權(quán)的函數(shù),讓cpu來處理。例如 doevents 函數(shù)。

2.2 僅顯示出部分信息

此種情況,一般用于搜索查詢顯示。當(dāng)用戶搜索某一內(nèi)容后,得出的結(jié)果可能會有成千上萬條。如果程序要把這些結(jié)果,都搜索出來并顯示到界面上速度一定很慢。

以大多數(shù)用戶搜索的習(xí)慣,一般只會看前十條記錄,之后就會細(xì)化搜索的條件或搜索其他內(nèi)容,不會將所有的搜索結(jié)果全部瀏覽。這樣,程序只要搜索出前面的部分記錄就可以,

利用 select top 10 from table where ***** 就可以實現(xiàn)此功能。同時,需要記錄此十條記錄的 pk_id ,如果用戶繼續(xù)查看后續(xù)的內(nèi)容,那么再進(jìn)行搜索的時候 要排除掉 先前已經(jīng)顯示的記錄。

2.3 數(shù)據(jù)的預(yù)處理

對一些固定條件下匯總的數(shù)據(jù)信息,可實現(xiàn)將數(shù)據(jù)匯總,存儲到數(shù)據(jù)庫中。這樣,在程序匯總該數(shù)據(jù)時,只需從數(shù)據(jù)庫中讀取出該條記錄即可,不需要再進(jìn)行。

2.4 C/S(B/S)架構(gòu)的程序設(shè)計:充分利用服務(wù)器端處理

對大量的數(shù)據(jù)運算操作,盡量放到服務(wù)器端,充分利用服務(wù)器高效的處理能力、高速的讀寫能力,來處理客戶端提出的需求。客戶端只用來顯示服務(wù)器端處理的結(jié)果和提交處理請求。這樣可以大幅提高程序的處理速度。

[1][美]John Papa,Matthew Shepker,等著.機(jī)械工業(yè)出版社,2000,1.

[2]百度文庫 SQL效率之索引.

猜你喜歡
程序數(shù)據(jù)庫
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
英國與歐盟正式啟動“離婚”程序程序
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
主站蜘蛛池模板: 91亚洲视频下载| 国产夜色视频| 日本91在线| 四虎成人精品在永久免费| 丰满人妻一区二区三区视频| 国产成人精品一区二区| 国产精品视频系列专区| 四虎永久免费在线| 毛片基地美国正在播放亚洲 | 国产三级精品三级在线观看| 国产成人禁片在线观看| 欧美日韩中文国产va另类| 免费看美女自慰的网站| 99热这里只有精品免费| 午夜性刺激在线观看免费| av一区二区无码在线| 伊伊人成亚洲综合人网7777| 亚洲成在线观看| 第九色区aⅴ天堂久久香| 亚洲最大在线观看| 精品福利视频导航| 国产精欧美一区二区三区| 91精品免费高清在线| 国产一区二区三区日韩精品| 91色在线观看| 欧美精品啪啪| 免费在线看黄网址| 乱色熟女综合一区二区| 欧美怡红院视频一区二区三区| 中国黄色一级视频| 国产91无毒不卡在线观看| 国产一级在线观看www色| 国产精品久久久久久久久| 最新国产在线| 久久这里只有精品8| 亚洲天堂免费观看| 久久久黄色片| 欧美在线精品怡红院| 日韩视频免费| 国产综合色在线视频播放线视 | 无码区日韩专区免费系列| 免费国产高清视频| 大香伊人久久| 中文字幕日韩久久综合影院| 色视频国产| 国产精品亚洲综合久久小说| 天堂av综合网| 免费看美女自慰的网站| 国产成人AV男人的天堂| 伊人天堂网| 91国内在线观看| 久久不卡国产精品无码| 久久青草精品一区二区三区| 精品一区二区三区波多野结衣| 男女性色大片免费网站| 狠狠色噜噜狠狠狠狠色综合久| 亚洲欧美在线精品一区二区| 激情无码视频在线看| 在线99视频| 强乱中文字幕在线播放不卡| 啊嗯不日本网站| 国产一区二区三区免费| 国产福利在线免费| 国产区成人精品视频| 亚洲h视频在线| 日本精品视频一区二区| 国产真实乱子伦视频播放| 亚洲精品图区| 狂欢视频在线观看不卡| 亚洲婷婷在线视频| 国产裸舞福利在线视频合集| 亚洲69视频| 久久精品国产电影| 亚洲成人在线网| 婷婷在线网站| 无码 在线 在线| 亚洲精品无码日韩国产不卡| 国产精品尹人在线观看| 日韩国产黄色网站| 亚洲区视频在线观看| 国产成人盗摄精品| 日本黄色不卡视频|