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

基于電信網管系統中查詢的研究

2008-04-12 00:00:00巨春飛
現代電子技術 2008年1期

摘 要:在電信網管系統中,為了對電信設備進行管理和性能優化,數據查詢操作是必不可少的。因為劣質SQL語句和優質SQL語句之間的操作速度差別可達上百倍,因此采用了SQL語句優化技術來提高查詢的效率,又因電信網管系統常需進行海量數據查詢,所以利用恰當的分頁顯示技術,進一步提高系統的響應速度。實踐證明了該方案的可性行。

關鍵詞:電信網管系統;查詢;SQL;分頁顯示

中圖分類號:TP311 文獻標識碼:A

文章編號:1004373X(2008)0113703

Study of Inquiry on Telecommunication Network Management System

JU Chunfei

(Xijing University,Xi′an,710123,China)

Abstract:In telecommunication network management system,in order to carry on the management and the optimizing performance to the telecommunication equipment,the data inquiry operation is essential.Because the difference between SQL sentence operating speed may reach hundred times,therefore using the SQL sentence optimization techniques to enhance the efficiency of inquiry.And further because the telecommunication network management system often carry on the magnanimous data inquiry,so using Pagination-display further enhances the system the speed of response.The practice indicated that,this plan is feasibility.

Keywords:telecommunication network management system;inquiry;SQL;pagination-display

在設計電信網管系統時,為了提高設備的可維護性、可管理性及優化設備的性能,相關數據的查詢和統計是必不可少的,可以說查詢的效率直接影響到系統的響應速度。要想提高系統的響應速度,可通過SQL語句的優化來實現,對于海量數據,劣質SQL語句和優質SQL語句之間的操作速度差別可以達到上百倍。此外,對大數據量的查詢結果,還可以采用分頁顯示技術來進一步減少系統的響應時間。

本文根據電信系統中數據查詢的特點,結合相關查詢技術研究的新進展,討論了如何在電信系統設計中應用SQL語句優化和分頁顯示等查詢技術提高系統的效率。對電信網管系統中統計和查詢模塊的設計具有一定的指導作用。

1 SQL語句優化技術

1.1 SQL語句優化的原因

電信系統數據庫的優化通常可通過對網絡、硬件、操作系統、數據庫參數和應用程序的優化來進行。根據統計對網絡、硬件、操作系統、數據庫參數進行優化所獲得的性能提升全部加起來只占數據庫應用系統性能提升的40%左右,其余60%的系統性能提升全部來自對應用程序的優化。因此可以肯定,通過優化應用程序來對數據庫系統進行優化能獲得更大的收益[1]。

對應用程序的優化通常可分為兩個方面:源代碼的優化和SQL語句的優化。由于涉及到對程序邏輯的改變,源代碼的優化在時間成本和風險上代價很高。另一方面,源代碼的優化對數據庫系統性能的提升有限,因為應用程序對數據庫的操作最終要表現為SQL語句對數據庫的操作。

對SQL語句進行優化有以下一些直接原因:

(1) SQL語句是對數據庫(數據)進行操作的惟一途徑,應用程序的執行最終要歸結為SQL語句的執行,SQL語句的效率對數據庫系統的性能起到了決定性的作用。

(2) SQL語句消耗了70%~90%的數據庫資源。

(3) SQL語句獨立于程序設計邏輯,對SQL語句進行優化不會影響程序邏輯,相對于對程序源代碼的優化,對SQL語句的優化在時間成本和風險上的代價都很低。

(1) SQL語句可以有不同的寫法,不同的寫法在性能上的差異可能很大。

(2) SQL語句易學難精通,SQL語句的性能往往同實際運行系統的數據庫結構及記錄數量等有關,不存在普遍適用的規律來提升性能。

1.2 SQL語句優化的難點及解決方案

人們在使用SQL時往往會陷入一個誤區,即太關注所得到的結果是否正確,而忽略了不同的實現方法之間可能存在的性能差異,這種性能差異在大型的或是復雜的數據庫環境中表現得尤為明顯。存在的問題有:不良的SQL往往來自于不恰當的索引設計、不充分的連接條件和不可優化的WHERE子句。在對他們進行適當的優化后,其運行速度有了明顯地提高。下面將從這3個方面分別進行總結[4]:

1.2.1 不合理的索引設計的解決方案

(1) 有大量重復值、且經常有范圍查詢(between,>,< ,>=,< =)和order by,group by發生的列,可考慮建立群集索引;

(2) 同時存取多列,且每列都含有重復值可考慮建立組合索引,組合索引要盡量使關鍵查詢形成索引覆蓋,其前導列一定是使用最頻繁的列。

1.2.2 不充分的連接條件的解決方案

表操作在被實際執行前,查詢優化器會根據連接條件,列出幾組可能的連接方案并從中找出系統開銷最小的最佳方案。因此要充分考慮帶有索引的表、行數多的表;內外表的選擇可由公式:外層表中的匹配行數*內層表中每一次查找的次數確定,乘積最小為最佳方案。

1.2.3 不可優化的WHERE子句的解決方案

優化即WHERE子句利用了索引,不可優化即發生了表掃描或額外開銷。

(1) 對列的操作都將導致表掃描,他包括數據庫函數、計算表達式等,查詢時要盡可能將操作移至等號右邊。

(2) in,or子句常會使用工作表,使索引失效。如果不產生大量重復值,可以考慮把子句拆開,拆開的子句中應該包含索引。

綜上所述SQL語句優化的實質就是在結果正確的前提下,用優化器可以識別的語句,充分利用索引,減少表掃描的I/O次數,盡量避免表搜索的發生。根據電信系統查詢的特點,可把索引建立在日期上,因為他可以縮小查詢的范圍,而且是電信查詢中最頻繁使用和最需要排序的字段。

1.3 SQL語句優化的實現

1.3.1 建立“適當”的索引

經分析電信網管系統的庫表結構,發現設備告警和日志的庫表中都有入庫時間,設備性能庫表中都有起始時間和中止時間,而且重復較少。又因為我們的WHERE子句使用了多個列作為SELECT的條件,所以可以在庫表的多個列上建立復合索引。由于設備告警和日志都需要以設備名為統計限制條件,而性能是以設備號為限制條件的,所以我們可以在入庫時間、起始時間、中止時間、設備名和設備號上建立組合索引,進一步提高效率。

以日志為例建立索引:

建立好索引后,就要設計WHERE子句盡量使關鍵查詢形成索引覆蓋,只有這樣才可以很好地利用建立的索引,以提高統計和查詢的效率。

1.3.2 優化WHERE子句

經過分析和研究,我們發現WHERE子句按照以下規則編寫可以提高效率。

(1) 選擇一個好的表連接順序。當在WHERE子句中有多個表連接時,WHERE子句中排在最后的表應當是返回行數可能最少的表,有過濾條件的子句應放在WHERE子句中的最后。

(2) 最好不要在WHERE子句中使用函數或表達式,如果要使用的話,最好統一使用相同的表達式或函數,這樣便于以后使用合理的索引。

(3) 同一個SQL子句應該盡可能簡單,將復雜的SQL 子句改寫為簡單的SQL子句。

(4) 使用WHERE (NOT)EXISTS來代替(NOT)IN子句,使用NOTEXISTS 子句可以有效地利用索引。

(5) 通過使用>=、<=等,避免使用NOT命令。

(6) 在查詢時盡量少用格式轉換。

(7) ORDERBY語句。ORDERBY語句決定了數據庫如何將返回的查詢結果排序。任何在ORDER BY語句的非索引項或者有計算表達式都將降低查詢速度。仔細檢查ORDERBY語句以找出非索引項或者表達式,他們會降低性能。解決這個問題的辦法就是重寫ORDERBY語句以使用索引,也可以為使用的列建立另外一個索引,同時應絕對避免在ORDERBY子句中使用表達式。

(8) ISNULL與ISNOTNULL。不能用NULL作索引,任何包含NULL值的列都將不會被包含在索引中。即使索引有多列這樣的情況下,只要這些列中有一列含有NULL,該列就會從索引中排除。也就是說如果某列存在空值,即使對該列建索引也不會提高性能。任何在WHERE子句中使用ISNULL或ISNOTNULL的語句優化器是不允許使用索引的。

根據以上總結,我們進行統計的SQL語句可以組合為以下形式:

(1) 日志查詢

select count(*) from日志庫表 where username = 用戶名 and devtype=設備類型 and devname=設備名 and cmdtime>=某時間 and cmdtime<某時間

(2) 告警查詢

select count(*) from告警庫表 where devtype=設備類型and devname=設備名and alarmtype =告警類型and cmdtime>=某時間 and cmdtime<某時間

在以上的SQL語句中使用>=、<=等,避免使用NOT命令,以提高查詢的效率,又因為cmdtime(入庫時間)、startime(起始時間)和 endtime(結束時間)的過濾條件比較確定,能大大縮小查詢范圍,所以我們將最具有選擇性的cmdtime,startime和 endtime放在WHERE子句中的最后。接下來在進行日志和告警統計時,把devname的過濾條件放在時間過濾條件的前面,形成了索引覆蓋,進一步提高了效率。

2 數據分頁顯示技術

2.1 數據分頁顯示技術的比較

由于電信系統數據庫的數據量較大,在進行網管數據查詢的時候,需要遍歷數據庫中的每一條記錄。經試驗當查詢的結果超過8萬條記錄時,查詢結果的顯示就會出現問題,因此需要采用分頁顯示技術,使查詢結果更快、更好地顯示給用戶 [2]。

目前比較廣泛使用的分頁顯示方式是將查詢結果緩存在內存中,翻頁的時候從緩存中取出一頁數據顯示。這種方法有兩個主要的缺點:一是用戶可能看到的是過期的數據;二是如果數據量非常大時第一次查詢遍歷結果集會耗費很長時間,并且緩存的數據會占用大量內存,效率明顯下降。

經典的數據分頁方法是:ADO記錄分頁法,也就是利用ADO自帶的分頁功能(利用游標)來實現分頁。但是這種分頁方法僅適用較小數據量的情形,因為游標本身有缺點:游標是存放在內存中,很費內存;游標一旦建立,就將相關的記錄鎖住,直到取消游標;對于多表和大表中定義的游標(大的數據集合),循環很容易使程序進入一個漫長的等待甚至死機。尤其對于非常大的數據模型而言,分頁檢索時,如果按照傳統的每次都加載整個數據的方法是非常浪費資源的。

較好的分頁顯示做法應該是每次翻頁的時從數據庫里檢索頁面大小塊區的數據,從而加快數據的顯示,也不會耗費大量的資源。

2.2 數據分頁顯示的實現

根據電信網管的特點,利用SQL語言的游標,確定需要返回的當前頁的搜索結果,并將其保存在內存中,后續的記錄再通過連數據庫取得,下面是分頁的實現。

在數據庫中創建一個存儲函數,這個存儲函數的輸入參數是:當前的頁數、每一頁的記錄數和從數據庫得到的要輸出的總記錄數。根據以上輸入參數,得到要顯示頁的內容。具體的存儲過程如下:

名稱:sta[CD#*2]pageView

參數設置:

實現過程:

(1) 根據用戶輸入的查詢條件,統計出符合條件的總的記錄數,記錄在@recordcount 中,假設用戶要訪問id號為 @pageid頁的內容。

Select @recordcount = count ( * )from sta[CD#*2]pageView where pageid = @pageid

(2) 為上述的查詢結果定義游標。一方面可以節省資源,另一方面可以避免掃描整個記錄集,提高定位速度。

(3) 利用游標和我們設定的參數,確定當前頁的第一條記錄和最后一條記錄的絕對位置,并把他們存在 @pagebegin 和 @pageend 中。

(4) 返回 @pagebegin 和 @pageend之間的記錄,即我們要訪問的那頁記錄。

最后在查詢模塊中調用以上存儲過程,將記錄集保存在一個二維數組中。遍歷這個二維數組,就可以獲得所有本頁的內容,并以適當的形式顯示出來。

2.3 數據分頁顯示性能分析

(1) 每次只傳回一頁記錄,而且只形成一個記錄集,而不必像傳統的游標法用:s.next來輸出Recordset記錄,讀取速度得到提高。

(2) 數據庫沒有用到臨時表,比轉儲記錄集的速度大大提高。

(3) 采用一個滾動游標,而且游標只經過2個操作就完成定位,速度也會大大提高。

選擇不同的數據,測試采用分頁顯示方法前后的效率和差異。測試數據和測試結果見表1。

從測試結果可以看出,采用了這種分頁顯示方法后,查詢速度隨著查詢量的增大而明顯提高。

3 結 語

隨著電信網管技術的不斷發展,人們對網絡性能數據的統計和分析的重視程度越來越高,因而對數據查詢的效率和精度的要求也在不斷提高,從而在對網管中設備的定性分析基礎上,為網絡管理提供維護和建設的依據。而查詢的效率和精度的提高與多種技術有關,并且很多技術也在不斷更新,所以要及時了解相關研究的新進展,及時采用新技術,充分發揮查詢在電信網管中的作用。

參 考 文 獻

[1]閔翔.人工智能數據庫系統優化的捷徑[J].中國計算機報,2001,16(5):14-16.

[2]勾成圖,張璟,李軍懷.海量數據分頁機制在Web信息系統中的應用研究[J].計算機應用,2005,8(8):11-13.

[3]王雄英,韓衛占.通信網管理技術[M].北京:國防工業出版社,2003.

[4]Poetier P J.數據庫技術大全[M].北京:電子工業出版社,1999.

[5]劉宇雷,錢淘.WWW對大量數據查詢的一種實現[J].微計算機應用,2001,22(6):344-346.

[6]羅駿,何羽.SQL實用簡明教程[M].北京:清華大學出版社,2004.

[7]蔡葵.SQL語句的查詢優化分析[J].華南金融電腦,2004(8):45-46.

[8]盤莉莉.SQL語句優化原則[J].福建電腦,2004(8):12-42.

[9]馬寧.如何提高SQL語句的查詢效率[J].江西電力職業技術學院學報,2005,18(2):37-38.

[10]Thomas Connolly,Carolyn Begg.Database Systems A Practical Approach to Design,Implementation and Management[M].Third Edition.北京:機械工業出版社,2005.

[11]Paulley G,Larson P.Exploiting Uniqueness in Query Optimization[C].In:IEEEInt.Conf.on Data Engineering,1994.

作者簡介 巨春飛 女,1974年出生,陜西省興平縣人,助教,碩士。主要從事軟件工程方向的研究。

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 极品私人尤物在线精品首页| 嫩草在线视频| 伊人色天堂| 久久精品中文无码资源站| 亚洲精选无码久久久| 国产成人免费观看在线视频| 欧美色亚洲| 久久人人97超碰人人澡爱香蕉| 日韩精品一区二区三区视频免费看| 色婷婷天天综合在线| 欧美国产综合视频| 亚洲国产成人精品青青草原| jizz在线观看| 免费全部高H视频无码无遮掩| 日韩黄色大片免费看| 黑人巨大精品欧美一区二区区| 真实国产乱子伦视频| 亚洲人成色在线观看| 中文字幕啪啪| www.精品国产| 伊人无码视屏| 中文字幕在线日本| 最新日本中文字幕| 国产波多野结衣中文在线播放| 九色综合视频网| 亚洲午夜福利精品无码| 国产精品人莉莉成在线播放| 青青青国产视频手机| 国产男女XX00免费观看| 亚洲人成网18禁| 亚洲视频免| 波多野结衣视频网站| 亚洲欧美日韩视频一区| 免费看美女毛片| 国产精品无码作爱| 影音先锋亚洲无码| 亚洲Av激情网五月天| 国产一级无码不卡视频| 亚洲日韩国产精品综合在线观看| 午夜国产大片免费观看| 91精品啪在线观看国产91九色| 国产在线视频自拍| 国产精品久久精品| 无码日韩精品91超碰| 久久午夜夜伦鲁鲁片无码免费| 国产精品香蕉| 成人av专区精品无码国产| 97久久精品人人| 国产永久免费视频m3u8| 人妻少妇久久久久久97人妻| 欧美精品v欧洲精品| 国产电话自拍伊人| 亚洲欧洲日韩综合色天使| 久久 午夜福利 张柏芝| 伊人大杳蕉中文无码| 女人18一级毛片免费观看| 亚洲天堂在线免费| 欧美在线免费| 国产色婷婷| 精品少妇人妻一区二区| 久久久久88色偷偷| 亚洲最大在线观看| 国产9191精品免费观看| 国产99免费视频| 中国一级特黄视频| 亚洲男人的天堂在线观看| 日本免费福利视频| 欧美午夜视频在线| 亚洲黄色视频在线观看一区| 狠狠色噜噜狠狠狠狠色综合久| 国产视频自拍一区| 亚洲欧美另类中文字幕| 在线国产91| 婷婷六月综合网| 欧美第二区| 中文字幕无线码一区| 无码一区18禁| 久无码久无码av无码| 欧美日本激情| 久久精品中文字幕少妇| 性做久久久久久久免费看| 丰满人妻一区二区三区视频|