版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
精品文檔-下載后可編輯基于SQLServer的數(shù)據(jù)庫應(yīng)用系統(tǒng)性能的優(yōu)化-基礎(chǔ)電子摘要:SQLServer數(shù)據(jù)庫在實際的運用中,往往會出現(xiàn)數(shù)據(jù)量過大的情況,如果不采取有效措施,就會導(dǎo)致系統(tǒng)性能不穩(wěn)定,出現(xiàn)連接超時、長時間等待和阻塞等情況。因此,我們從數(shù)據(jù)庫的設(shè)計以及SQL語句等方面入手,論述了SQLServer數(shù)據(jù)庫應(yīng)用系統(tǒng)性能的優(yōu)化。
0引言
由于SQLServers數(shù)據(jù)庫管理系統(tǒng)具有較高的數(shù)據(jù)管理性能,因此被廣泛應(yīng)用于服務(wù)器和客戶體系結(jié)構(gòu)中。其系統(tǒng)的吞吐量、響應(yīng)時間以及并行處理能力,對于SQL發(fā)生請求之后顯示返回結(jié)果的速度,以及在屏幕上含有數(shù)據(jù)時切換不同屏幕的速度等,這些方面都是SQLServer數(shù)據(jù)庫性能的表現(xiàn)。我們在這里主要論述了SQLServer數(shù)據(jù)庫的這些性能要注意的問題以及相關(guān)的優(yōu)化方法。
1優(yōu)化SQLServer數(shù)據(jù)庫的設(shè)計
1.1優(yōu)化數(shù)據(jù)庫事務(wù)
多個SQL語句組成了SQLServer數(shù)據(jù)庫的事務(wù)的邏輯單元,數(shù)據(jù)庫服務(wù)器執(zhí)行著事務(wù)的控制和處理,應(yīng)用程序則劃分了數(shù)據(jù)庫事務(wù)的起點和終點。在使用數(shù)據(jù)庫時,應(yīng)盡量縮短數(shù)據(jù)庫的事務(wù),事務(wù)短了,則其通過SQL語句占用獲得的回滾空間和鎖就可以得到盡快釋放,從而降低SQLServer數(shù)據(jù)庫系統(tǒng)在并發(fā)處理時的資源競爭。
1.2優(yōu)化返回信息量
查詢大量數(shù)據(jù)會大大增加數(shù)據(jù)服務(wù)器的負(fù)擔(dān),因此用戶在進(jìn)行自定義條件查詢過的時候,如果表的數(shù)據(jù)量過大,則應(yīng)該要設(shè)定一個條件,以避免系統(tǒng)返回過多的信息量,導(dǎo)致DMNS的性能下降。系統(tǒng)返回大量數(shù)據(jù)會增加網(wǎng)絡(luò)通信量,從而造成網(wǎng)絡(luò)的擁擠,而如果客戶機(jī)的內(nèi)存不足,返回信息量嚴(yán)重超載,則會造成嚴(yán)重的錯誤。
1.3優(yōu)化訪問次數(shù)
當(dāng)應(yīng)用程序要對類似或者相同的數(shù)據(jù),例如代碼表這些數(shù)據(jù)進(jìn)行反復(fù)操作的時候,可以從數(shù)據(jù)庫上性將數(shù)據(jù)檢索并到客戶機(jī)的緩存中,采取數(shù)據(jù)共享的技術(shù)對儲存好的數(shù)據(jù)進(jìn)行反復(fù)使用?;蛘咴瓟?shù)據(jù)窗口有事先儲存好的數(shù)據(jù),可以直接加以利用,而不用再去檢索服務(wù)器。通過減少對數(shù)據(jù)庫服務(wù)器的訪問,可以使其性能得到優(yōu)化。
1.4優(yōu)化屏幕速度
優(yōu)化屏幕的速度,就是優(yōu)化其顯示和切換的速度,主要要注意以下幾點:(1)減少屏幕窗口的使用功能,如果一個屏幕上有過多功能,則會導(dǎo)致其運行速度減慢;(2)在需要檢索較大數(shù)量的數(shù)據(jù)時,利用數(shù)據(jù)窗口注意要有所限制,限制記錄從數(shù)據(jù)庫返回緩沖區(qū)的個數(shù),應(yīng)該在數(shù)據(jù)窗口即將填滿數(shù)據(jù)的時候讓用戶看到屏幕并得到其控制權(quán),而不是要等到數(shù)據(jù)全部都檢索出來,之后再進(jìn)行數(shù)據(jù)窗口的填充;(3)避免讓用戶等待空屏,要在顯示數(shù)據(jù)窗口之后再通過服務(wù)器檢索數(shù)據(jù)。
1.5優(yōu)化數(shù)據(jù)鏈接庫
ADO有著便于使用和遠(yuǎn)程數(shù)據(jù)訪問的特點,其速度較快,占用的內(nèi)存少,對磁盤造成的遺留痕跡小,而且其關(guān)鍵功能是支持服務(wù)器和客戶端的建立以及基于Web的應(yīng)用程序,通過遠(yuǎn)程數(shù)據(jù)的訪問,可以將服務(wù)器的數(shù)據(jù)通過來回傳輸移動到Web網(wǎng)頁或者客戶端的應(yīng)用程序中,用戶再通過客戶端來操作或者更新數(shù)據(jù),再把數(shù)據(jù)傳輸回服務(wù)器。
1.6優(yōu)化網(wǎng)絡(luò)負(fù)載
網(wǎng)絡(luò)是服務(wù)器和客戶端的工作基礎(chǔ),而由于網(wǎng)絡(luò)的寬帶存在限制,往往也會影響到SQLServer數(shù)據(jù)庫系統(tǒng)性能的優(yōu)化。通過利用存儲過程來減少對SQLServer數(shù)據(jù)庫的大量查詢,可以避免網(wǎng)絡(luò)流量過大而造成的網(wǎng)絡(luò)擁堵和堵塞,從而可以提高SQLServer數(shù)據(jù)庫系統(tǒng)的吞吐量,加快其響應(yīng)時間。一方面,客戶只需傳遞一些參數(shù)來調(diào)用存儲過程,而不用向SQLServer數(shù)據(jù)庫服務(wù)器發(fā)送大量語句。而另一方面,通過利用服務(wù)器的處理優(yōu)勢來處理數(shù)據(jù),改善了原始數(shù)據(jù)再進(jìn)行處理的繁瑣情況,通過減小結(jié)果的集合而實現(xiàn)了網(wǎng)絡(luò)負(fù)載的優(yōu)化。
1.7善用臨時列表
在進(jìn)行大量數(shù)據(jù)的統(tǒng)計處理時,客戶機(jī)的運行速度會隨著數(shù)據(jù)庫數(shù)量的增加而減慢,當(dāng)處理表的記錄多達(dá)上幾十萬甚至幾百萬條的時候,運行速度減慢的效果會更加明顯。而如果在編制程序時,善于利用臨時列表的話,就可以大大的提高系統(tǒng)的運行速度和處理時間,從而減少甚至忽略因處理表記錄過多對系統(tǒng)運行處理性能的影響。所謂的臨時列表,是系統(tǒng)在運行時存放在臨時數(shù)據(jù)庫的文件,這些文件會在系統(tǒng)完成數(shù)據(jù)處理之后被自動刪除。
2優(yōu)化SQL的語句
2.1充分利用索引,減少全表掃描
優(yōu)化SQL語句,實質(zhì)上就是保證正確結(jié)果的前提下,通過對索引的充分利用,采用服務(wù)器可以識別的語句來進(jìn)行索引,以減少對服務(wù)器的全表掃描并避免返回沒有限定條件的信息。
例如下面的兩條SQL語句:
語句一:select班級,姓名fromT1where姓名notin(select姓名fromT2);
語句二:select班級,姓名fromT1wherenotexists(select班級FROMT2whereT2.姓名=T1姓名);
在上述的語句一和語句二中,兩者的的結(jié)果是一樣的,但是由于語句一沒有使用在T2表上建立的姓名索引,因此SQLServe在執(zhí)行的時候就會掃描整個T2表。而語句二中的子查詢因為使用了聯(lián)合查詢,所以SQLServe在執(zhí)行的時候就只是掃描T2表的部分?jǐn)?shù)據(jù)。通過利用姓名索引,使語句二比語句一的檢索效率要高許多,通過語句的優(yōu)化,也使SQLServe數(shù)據(jù)庫的系統(tǒng)性能得到了優(yōu)化。同時,還要避免在表達(dá)式中使用條件列。例如“where成績='90‘”以及“where成績/1000.8”這兩個條件列。在這里,SQL的條件語句都有著恰當(dāng)?shù)乃饕?,但是?zhí)行語句的速度卻非常的慢,這是因為條件列中“where”字句對列的所有操作結(jié)果,都是SQLServe在執(zhí)行語句時通過對每列的計算的來的,所以SQL要對全表進(jìn)行掃描。而將上面兩個條件列語句改成“where成績like'90’”和“where成績80”,則SQLServe執(zhí)行語句的速度則會明顯快很多。
再者,在SQL語句中,還要避免使用不相等或者NULL條件列,例如“where成績isnull”和“where成績≠80”,因為這樣的話雖然在查詢列例有索引,但這個索引卻無法被使用。
還有的話,在使用like條件列時,要盡量避免賦值變量或者是以“%”作為開始,因為這種情況下索引也無法被使用,如“where姓名like'%Jam'”和“where班級likevar_班級”.
2.2避免使用in、notin語句
在SQL語句中,要避免用到in、notin的語句,而采用exists、notexists語句的效果要比使用in、notin語句的效果好得多。
2.3慎用聯(lián)合查詢以及查詢次序
對于視圖的查詢,是可以將其分解,變成對數(shù)據(jù)表的直接數(shù)據(jù)查詢。而在進(jìn)行數(shù)據(jù)查詢時,程序員首先要查詢的往往是主表,而由于主表需要掃描整個表數(shù)據(jù),因此應(yīng)該將主表的數(shù)據(jù)量控制為的,主表的查詢列范圍也要比從表的查詢列范圍小。主表和從表之間的聯(lián)合要結(jié)合數(shù)據(jù)量的大小以及索引條件來考慮。
3結(jié)語
SQLServer數(shù)據(jù)庫系統(tǒng)系能的優(yōu)化是一個復(fù)雜的系統(tǒng)工程,其貫穿了數(shù)據(jù)庫系統(tǒng)的整個生命周期,從系統(tǒng)的開發(fā)、到系統(tǒng)的設(shè)計、到系統(tǒng)的維護(hù),每個環(huán)節(jié)和每個步驟都要注意,一點小小的失誤都會影響SQLServer數(shù)據(jù)庫系統(tǒng)的終性能。因此要重視對SQ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版工程招投標(biāo)與合同管理教材
- 珠寶公司職工2025年度福利合同3篇
- 二零二五年度綠化景觀改造與維護(hù)合同4篇
- 個體咨詢勞務(wù)合同模板2024
- 二零二五年度水塔供水項目招投標(biāo)合同模板4篇
- 2025年度汽車行業(yè)數(shù)據(jù)安全保護(hù)合同3篇
- 二零二五年度慈溪教育局校園環(huán)境整治工程合同4篇
- 二零二五年度戶外運動場所窗簾設(shè)計合同4篇
- 2025年度冷鏈物流倉儲場地平整與智能化改造合同4篇
- 二零二五年度生態(tài)保護(hù)項目承包借款合同模板4篇
- 圓周率的認(rèn)識
- 基于SMT求解器的分支條件覆蓋測試
- 反騷擾政策程序
- 運動技能學(xué)習(xí)與控制課件第十一章運動技能的練習(xí)
- 射頻在疼痛治療中的應(yīng)用
- 四年級數(shù)學(xué)豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項痹病辨證施護(hù)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會
評論
0/150
提交評論