?

基于SQL Server的數據庫應用系統性能的優化

2013-03-25 05:51楊薇劉陽
電子測試 2013年9期
關鍵詞:數據庫系統語句應用程序

楊薇,劉陽

(1.大連市91550部隊,遼寧大連 116023;2.大連東軟信息學院,遼寧大連 116023)

由于SQL Servers 數據庫管理系統具有較高的數據管理性能,因此被廣泛應用于服務器和客戶體系結構中。其系統的吞吐量、響應時間以及并行處理能力,對于SQL 發生請求之后顯示返回結果的速度,以及在屏幕上含有數據時切換不同屏幕的速度等,這些方面都是SQL Server 數據庫性能的表現。我們在這里主要論述了SQL Server 數據庫的這些性能要注意的問題以及相關的優化方法。

1 優化SQL Server 數據庫的設計

1.1 優化數據庫事務

多個SQL語句組成了SQL Server數據庫的事務的邏輯單元,數據庫服務器執行著事務的控制和處理,應用程序則劃分了數據庫事務的起點和終點。在使用數據庫時,應盡量縮短數據庫的事務,事務短了,則其通過SQL 語句占用獲得的回滾空間和鎖就可以得到盡快釋放,從而降低SQL Server 數據庫系統在并發處理時的資源競爭。

1.2 優化返回信息量

查詢大量數據會大大增加數據服務器的負擔,因此用戶在進行自定義條件查詢過的時候,如果表的數據量過大,則應該要設定一個條件,以避免系統返回過多的信息量,導致DMNS的性能下降。系統返回大量數據會增加網絡通信量,從而造成網絡的擁擠,而如果客戶機的內存不足,返回信息量嚴重超載,則會造成嚴重的錯誤。

1.3 優化訪問次數

當應用程序要對類似或者相同的數據,例如代碼表這些數據進行反復操作的時候,可以從數據庫上一次性將數據檢索并下載到客戶機的緩存中,采取數據共享的技術對儲存好的數據進行反復使用?;蛘咴瓟祿翱谟惺孪葍Υ婧玫臄祿?,可以直接加以利用,而不用再去檢索服務器。通過減少對數據庫服務器的訪問,可以使其性能得到優化。

1.4 優化屏幕速度

優化屏幕的速度,就是優化其顯示和切換的速度,主要要注意以下幾點:(1)減少屏幕窗口的使用功能,如果一個屏幕上有過多功能,則會導致其運行速度減慢;(2)在需要檢索較大數量的數據時,利用數據窗口注意要有所限制,限制記錄從數據庫返回緩沖區的個數,應該在數據窗口即將填滿數據的時候讓用戶看到屏幕并得到其控制權,而不是要等到數據全部都檢索出來,之后再進行數據窗口的填充;(3)避免讓用戶等待空屏,要在顯示數據窗口之后再通過服務器檢索數據。

1.5 優化數據鏈接庫

ADO 有著便于使用和遠程數據訪問的特點,其速度較快,占用的內存少,對磁盤造成的遺留痕跡小,而且其關鍵功能是支持服務器和客戶端的建立以及基于Web的應用程序,通過遠程數據的訪問,可以將服務器的數據通過來回傳輸移動到Web 網頁或者客戶端的應用程序中,用戶再通過客戶端來操作或者更新數據,最后再把數據傳輸回服務器。

1.6 優化網絡負載

網絡是服務器和客戶端的工作基礎,而由于網絡的寬帶存在限制,往往也會影響到SQL Server 數據庫系統性能的優化。通過利用存儲過程來減少對SQL Server 數據庫的大量查詢,可以避免網絡流量過大而造成的網絡擁堵和堵塞,從而可以提高SQL Server 數據庫系統的吞吐量,加快其響應時間。一方面,客戶只需傳遞一些參數來調用存儲過程,而不用向SQL Server 數據庫服務器發送大量語句。而另一方面,通過利用服務器的處理優勢來處理數據,改善了下載原始數據再進行處理的繁瑣情況,通過減小結果的集合而實現了網絡負載的優化。

1.7 善用臨時列表

在進行大量數據的統計處理時,客戶機的運行速度會隨著數據庫數量的增加而減慢,當處理表的記錄多達上幾十萬甚至幾百萬條的時候,運行速度減慢的效果會更加明顯。而如果在編制程序時,善于利用臨時列表的話,就可以大大的提高系統的運行速度和處理時間,從而減少甚至忽略因處理表記錄過多對系統運行處理性能的影響。所謂的臨時列表,是系統在運行時存放在臨時數據庫的文件,這些文件會在系統完成數據處理之后被自動刪除。

2 優化SQL的語句

2.1 充分利用索引,減少全表掃描

優化SQL 語句,實質上就是保證正確結果的前提下,通過對索引的充分利用,采用服務器可以識別的語句來進行索引,以減少對服務器的全表掃描并避免返回沒有限定條件的信息。

例如下面的兩條SQL 語句:

語句一:select 班級,姓名from T1 where 姓名not in(select 姓名fromT2);

語句二:select 班級,姓名from T1 where not exists(select 班級FROM T2 where T2.姓名=T1姓名);

在上述的語句一和語句二中,兩者的的結果是一樣的,但是由于語句一沒有使用在T2表上建立的姓名索引,因此SQL Serve 在執行的時候就會掃描整個T2表。而語句二中的子查詢因為使用了聯合查詢,所以SQL Serve 在執行的時候就只是掃描T2表的部分數據。通過利用姓名索引,使語句二比語句一的檢索效率要高許多,通過語句的優化,也使SQL Serve 數據庫的系統性能得到了優化。同時,還要避免在表達式中使用條件列。例如“where 成績=‘90’”以及“where 成績/100>0.8”這兩個條件列。在這里,SQL的條件語句都有著恰當的索引,但是執行語句的速度卻非常的慢,這是因為條件列中“where”字句對列的所有操作結果,都是SQL Serve 在執行語句時通過對每列的計算的來的,所以SQL 要對全表進行掃描。而將上面兩個條件列語句改成“where 成績like‘90’”和“where 成績>80”,則SQL Serve 執行語句的速度則會明顯快很多。

再者,在SQL語句中,還要避免使用不相等或者NULL條件列,例如“where 成績is null”和“where 成績≠80”,因為這樣的話雖然在查詢列例有索引,但這個索引卻無法被使用。

還有的話,在使用like 條件列時,要盡量避免賦值變量或者是以“%”作為開始,因為這種情況下索引也無法被使用,如“where姓名like‘%Jam’”和“where 班級like var_班級”。

2.2 避免使用in、not in 語句

在SQL 語句中,要避免用到in、not in的語句,而采用exists、not exists 語句的效果要比使用in、not in 語句的效果好得多。

2.3 慎用聯合查詢以及查詢次序

對于視圖的查詢,最好是可以將其分解,變成對數據表的直接數據查詢。而在進行數據查詢時,程序員首先要查詢的往往是主表,而由于主表需要掃描整個表數據,因此應該將主表的數據量控制為最小的,主表的查詢列范圍也要比從表的查詢列范圍小。主表和從表之間的聯合要結合數據量的大小以及索引條件來考慮。

3 結語

SQL Server 數據庫系統系能的優化是一個復雜的系統工程,其貫穿了數據庫系統的整個生命周期,從系統的開發、到系統的設計、到系統的維護,每個環節和每個步驟都要注意,一點小小的失誤都會影響SQL Server 數據庫系統的最終性能。因此要重視對SQL Server 數據庫系統的優化意識,要根據用戶軟件和硬件的實際配置、對于系統的性能和作用的要求、以及應用程序的設計等情況來采取合適的優化策略。而對于系統的網絡瓶頸、性能要求以及事務特點和儲存結構等都要有深刻的認識和理解,并以其作為系統性能優化的基礎。在進行系統開發的時候,還要結合實際情況對系統進行性能權衡優化,以提高系統的整體性能。

[1]丁燕云,魏娟.淺析SQL 數據庫的性能優化問題[J].科技信息(學術研究),2007(34).

[2]孔令富,秦宇.基于SQL Serve7.0大型數據庫應用系統系能優化的研究[J].計算機工程與設計,2001(05).

[3]陶銳.SQL Serve 應用程序的性能檢測與優化[J].赤峰學院學報(自然科學版),2006(04).

[4]王勇.基于SQL 數據庫的性能優化問題分析[J].電腦知識與技術,2008(15).

[5]楊柳.SQL Serve 數據庫的性能分析與優化策略[J].科技創新導報,2011(01).

[6]谷震離.SQL Server 數據庫應用程序性能優化方法[J].計算機工程與設計,2006(15).

猜你喜歡
數據庫系統語句應用程序
重點:語句銜接
刪除Win10中自帶的應用程序
谷歌禁止加密貨幣應用程序
微細銑削工藝數據庫系統設計與開發
江蘇省ETC數據庫系統改造升級方案探討
實時數據庫系統數據安全采集方案
核反應堆材料數據庫系統及其應用
如何搞定語句銜接題
三星電子將開設應用程序下載商店
作文語句實錄
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合