版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精品文檔-下載后可編輯基于SQLServer的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)性能的優(yōu)化-基礎(chǔ)電子摘要:SQLServer數(shù)據(jù)庫(kù)在實(shí)際的運(yùn)用中,往往會(huì)出現(xiàn)數(shù)據(jù)量過(guò)大的情況,如果不采取有效措施,就會(huì)導(dǎo)致系統(tǒng)性能不穩(wěn)定,出現(xiàn)連接超時(shí)、長(zhǎng)時(shí)間等待和阻塞等情況。因此,我們從數(shù)據(jù)庫(kù)的設(shè)計(jì)以及SQL語(yǔ)句等方面入手,論述了SQLServer數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)性能的優(yōu)化。
0引言
由于SQLServers數(shù)據(jù)庫(kù)管理系統(tǒng)具有較高的數(shù)據(jù)管理性能,因此被廣泛應(yīng)用于服務(wù)器和客戶體系結(jié)構(gòu)中。其系統(tǒng)的吞吐量、響應(yīng)時(shí)間以及并行處理能力,對(duì)于SQL發(fā)生請(qǐng)求之后顯示返回結(jié)果的速度,以及在屏幕上含有數(shù)據(jù)時(shí)切換不同屏幕的速度等,這些方面都是SQLServer數(shù)據(jù)庫(kù)性能的表現(xiàn)。我們?cè)谶@里主要論述了SQLServer數(shù)據(jù)庫(kù)的這些性能要注意的問(wèn)題以及相關(guān)的優(yōu)化方法。
1優(yōu)化SQLServer數(shù)據(jù)庫(kù)的設(shè)計(jì)
1.1優(yōu)化數(shù)據(jù)庫(kù)事務(wù)
多個(gè)SQL語(yǔ)句組成了SQLServer數(shù)據(jù)庫(kù)的事務(wù)的邏輯單元,數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行著事務(wù)的控制和處理,應(yīng)用程序則劃分了數(shù)據(jù)庫(kù)事務(wù)的起點(diǎn)和終點(diǎn)。在使用數(shù)據(jù)庫(kù)時(shí),應(yīng)盡量縮短數(shù)據(jù)庫(kù)的事務(wù),事務(wù)短了,則其通過(guò)SQL語(yǔ)句占用獲得的回滾空間和鎖就可以得到盡快釋放,從而降低SQLServer數(shù)據(jù)庫(kù)系統(tǒng)在并發(fā)處理時(shí)的資源競(jìng)爭(zhēng)。
1.2優(yōu)化返回信息量
查詢大量數(shù)據(jù)會(huì)大大增加數(shù)據(jù)服務(wù)器的負(fù)擔(dān),因此用戶在進(jìn)行自定義條件查詢過(guò)的時(shí)候,如果表的數(shù)據(jù)量過(guò)大,則應(yīng)該要設(shè)定一個(gè)條件,以避免系統(tǒng)返回過(guò)多的信息量,導(dǎo)致DMNS的性能下降。系統(tǒng)返回大量數(shù)據(jù)會(huì)增加網(wǎng)絡(luò)通信量,從而造成網(wǎng)絡(luò)的擁擠,而如果客戶機(jī)的內(nèi)存不足,返回信息量嚴(yán)重超載,則會(huì)造成嚴(yán)重的錯(cuò)誤。
1.3優(yōu)化訪問(wèn)次數(shù)
當(dāng)應(yīng)用程序要對(duì)類似或者相同的數(shù)據(jù),例如代碼表這些數(shù)據(jù)進(jìn)行反復(fù)操作的時(shí)候,可以從數(shù)據(jù)庫(kù)上性將數(shù)據(jù)檢索并到客戶機(jī)的緩存中,采取數(shù)據(jù)共享的技術(shù)對(duì)儲(chǔ)存好的數(shù)據(jù)進(jìn)行反復(fù)使用?;蛘咴瓟?shù)據(jù)窗口有事先儲(chǔ)存好的數(shù)據(jù),可以直接加以利用,而不用再去檢索服務(wù)器。通過(guò)減少對(duì)數(shù)據(jù)庫(kù)服務(wù)器的訪問(wèn),可以使其性能得到優(yōu)化。
1.4優(yōu)化屏幕速度
優(yōu)化屏幕的速度,就是優(yōu)化其顯示和切換的速度,主要要注意以下幾點(diǎn):(1)減少屏幕窗口的使用功能,如果一個(gè)屏幕上有過(guò)多功能,則會(huì)導(dǎo)致其運(yùn)行速度減慢;(2)在需要檢索較大數(shù)量的數(shù)據(jù)時(shí),利用數(shù)據(jù)窗口注意要有所限制,限制記錄從數(shù)據(jù)庫(kù)返回緩沖區(qū)的個(gè)數(shù),應(yīng)該在數(shù)據(jù)窗口即將填滿數(shù)據(jù)的時(shí)候讓用戶看到屏幕并得到其控制權(quán),而不是要等到數(shù)據(jù)全部都檢索出來(lái),之后再進(jìn)行數(shù)據(jù)窗口的填充;(3)避免讓用戶等待空屏,要在顯示數(shù)據(jù)窗口之后再通過(guò)服務(wù)器檢索數(shù)據(jù)。
1.5優(yōu)化數(shù)據(jù)鏈接庫(kù)
ADO有著便于使用和遠(yuǎn)程數(shù)據(jù)訪問(wèn)的特點(diǎn),其速度較快,占用的內(nèi)存少,對(duì)磁盤(pán)造成的遺留痕跡小,而且其關(guān)鍵功能是支持服務(wù)器和客戶端的建立以及基于Web的應(yīng)用程序,通過(guò)遠(yuǎn)程數(shù)據(jù)的訪問(wèn),可以將服務(wù)器的數(shù)據(jù)通過(guò)來(lái)回傳輸移動(dòng)到Web網(wǎng)頁(yè)或者客戶端的應(yīng)用程序中,用戶再通過(guò)客戶端來(lái)操作或者更新數(shù)據(jù),再把數(shù)據(jù)傳輸回服務(wù)器。
1.6優(yōu)化網(wǎng)絡(luò)負(fù)載
網(wǎng)絡(luò)是服務(wù)器和客戶端的工作基礎(chǔ),而由于網(wǎng)絡(luò)的寬帶存在限制,往往也會(huì)影響到SQLServer數(shù)據(jù)庫(kù)系統(tǒng)性能的優(yōu)化。通過(guò)利用存儲(chǔ)過(guò)程來(lái)減少對(duì)SQLServer數(shù)據(jù)庫(kù)的大量查詢,可以避免網(wǎng)絡(luò)流量過(guò)大而造成的網(wǎng)絡(luò)擁堵和堵塞,從而可以提高SQLServer數(shù)據(jù)庫(kù)系統(tǒng)的吞吐量,加快其響應(yīng)時(shí)間。一方面,客戶只需傳遞一些參數(shù)來(lái)調(diào)用存儲(chǔ)過(guò)程,而不用向SQLServer數(shù)據(jù)庫(kù)服務(wù)器發(fā)送大量語(yǔ)句。而另一方面,通過(guò)利用服務(wù)器的處理優(yōu)勢(shì)來(lái)處理數(shù)據(jù),改善了原始數(shù)據(jù)再進(jìn)行處理的繁瑣情況,通過(guò)減小結(jié)果的集合而實(shí)現(xiàn)了網(wǎng)絡(luò)負(fù)載的優(yōu)化。
1.7善用臨時(shí)列表
在進(jìn)行大量數(shù)據(jù)的統(tǒng)計(jì)處理時(shí),客戶機(jī)的運(yùn)行速度會(huì)隨著數(shù)據(jù)庫(kù)數(shù)量的增加而減慢,當(dāng)處理表的記錄多達(dá)上幾十萬(wàn)甚至幾百萬(wàn)條的時(shí)候,運(yùn)行速度減慢的效果會(huì)更加明顯。而如果在編制程序時(shí),善于利用臨時(shí)列表的話,就可以大大的提高系統(tǒng)的運(yùn)行速度和處理時(shí)間,從而減少甚至忽略因處理表記錄過(guò)多對(duì)系統(tǒng)運(yùn)行處理性能的影響。所謂的臨時(shí)列表,是系統(tǒng)在運(yùn)行時(shí)存放在臨時(shí)數(shù)據(jù)庫(kù)的文件,這些文件會(huì)在系統(tǒng)完成數(shù)據(jù)處理之后被自動(dòng)刪除。
2優(yōu)化SQL的語(yǔ)句
2.1充分利用索引,減少全表掃描
優(yōu)化SQL語(yǔ)句,實(shí)質(zhì)上就是保證正確結(jié)果的前提下,通過(guò)對(duì)索引的充分利用,采用服務(wù)器可以識(shí)別的語(yǔ)句來(lái)進(jìn)行索引,以減少對(duì)服務(wù)器的全表掃描并避免返回沒(méi)有限定條件的信息。
例如下面的兩條SQL語(yǔ)句:
語(yǔ)句一:select班級(jí),姓名fromT1where姓名notin(select姓名fromT2);
語(yǔ)句二:select班級(jí),姓名fromT1wherenotexists(select班級(jí)FROMT2whereT2.姓名=T1姓名);
在上述的語(yǔ)句一和語(yǔ)句二中,兩者的的結(jié)果是一樣的,但是由于語(yǔ)句一沒(méi)有使用在T2表上建立的姓名索引,因此SQLServe在執(zhí)行的時(shí)候就會(huì)掃描整個(gè)T2表。而語(yǔ)句二中的子查詢因?yàn)槭褂昧寺?lián)合查詢,所以SQLServe在執(zhí)行的時(shí)候就只是掃描T2表的部分?jǐn)?shù)據(jù)。通過(guò)利用姓名索引,使語(yǔ)句二比語(yǔ)句一的檢索效率要高許多,通過(guò)語(yǔ)句的優(yōu)化,也使SQLServe數(shù)據(jù)庫(kù)的系統(tǒng)性能得到了優(yōu)化。同時(shí),還要避免在表達(dá)式中使用條件列。例如“where成績(jī)='90‘”以及“where成績(jī)/1000.8”這兩個(gè)條件列。在這里,SQL的條件語(yǔ)句都有著恰當(dāng)?shù)乃饕?,但是?zhí)行語(yǔ)句的速度卻非常的慢,這是因?yàn)闂l件列中“where”字句對(duì)列的所有操作結(jié)果,都是SQLServe在執(zhí)行語(yǔ)句時(shí)通過(guò)對(duì)每列的計(jì)算的來(lái)的,所以SQL要對(duì)全表進(jìn)行掃描。而將上面兩個(gè)條件列語(yǔ)句改成“where成績(jī)like'90’”和“where成績(jī)80”,則SQLServe執(zhí)行語(yǔ)句的速度則會(huì)明顯快很多。
再者,在SQL語(yǔ)句中,還要避免使用不相等或者NULL條件列,例如“where成績(jī)isnull”和“where成績(jī)≠80”,因?yàn)檫@樣的話雖然在查詢列例有索引,但這個(gè)索引卻無(wú)法被使用。
還有的話,在使用like條件列時(shí),要盡量避免賦值變量或者是以“%”作為開(kāi)始,因?yàn)檫@種情況下索引也無(wú)法被使用,如“where姓名like'%Jam'”和“where班級(jí)likevar_班級(jí)”.
2.2避免使用in、notin語(yǔ)句
在SQL語(yǔ)句中,要避免用到in、notin的語(yǔ)句,而采用exists、notexists語(yǔ)句的效果要比使用in、notin語(yǔ)句的效果好得多。
2.3慎用聯(lián)合查詢以及查詢次序
對(duì)于視圖的查詢,是可以將其分解,變成對(duì)數(shù)據(jù)表的直接數(shù)據(jù)查詢。而在進(jìn)行數(shù)據(jù)查詢時(shí),程序員首先要查詢的往往是主表,而由于主表需要掃描整個(gè)表數(shù)據(jù),因此應(yīng)該將主表的數(shù)據(jù)量控制為的,主表的查詢列范圍也要比從表的查詢列范圍小。主表和從表之間的聯(lián)合要結(jié)合數(shù)據(jù)量的大小以及索引條件來(lái)考慮。
3結(jié)語(yǔ)
SQLServer數(shù)據(jù)庫(kù)系統(tǒng)系能的優(yōu)化是一個(gè)復(fù)雜的系統(tǒng)工程,其貫穿了數(shù)據(jù)庫(kù)系統(tǒng)的整個(gè)生命周期,從系統(tǒng)的開(kāi)發(fā)、到系統(tǒng)的設(shè)計(jì)、到系統(tǒng)的維護(hù),每個(gè)環(huán)節(jié)和每個(gè)步驟都要注意,一點(diǎn)小小的失誤都會(huì)影響SQLServer數(shù)據(jù)庫(kù)系統(tǒng)的終性能。因此要重視對(duì)SQ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度地磅租賃與智能停車(chē)場(chǎng)綜合管理合同
- 烘焙店員工勞動(dòng)合同(2025)員工離職補(bǔ)償及競(jìng)業(yè)限制協(xié)議
- 2025年度魚(yú)塘漁業(yè)市場(chǎng)分析與營(yíng)銷(xiāo)策劃協(xié)議
- 二零二五年度花店店面轉(zhuǎn)讓及線上線下融合服務(wù)合同
- 二零二五年度船舶光船租賃與船舶租賃市場(chǎng)分析報(bào)告合同
- 2025年度年度文化創(chuàng)意園場(chǎng)地?zé)o償使用協(xié)議
- 2025年度老年公寓護(hù)理員護(hù)理技能提升合同
- 土地糾紛解決咨詢協(xié)議書(shū)2025年度版本
- 二零二五年度車(chē)輛所有權(quán)變更不過(guò)戶免責(zé)協(xié)議書(shū)
- 二零二五年度遠(yuǎn)程醫(yī)療軟件著作權(quán)轉(zhuǎn)讓協(xié)議范本
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(jì)(全)
- 宿舍、辦公樓消防應(yīng)急預(yù)案
- 細(xì)胞全能性的課件資料
- 職業(yè)安全健康工作總結(jié)(2篇)
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- YB 4022-1991耐火泥漿荷重軟化溫度試驗(yàn)方法(示差-升溫法)
- 水土保持方案中沉沙池的布設(shè)技術(shù)
- 安全生產(chǎn)技術(shù)規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營(yíng)企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進(jìn)本土項(xiàng)目化設(shè)計(jì)-讀《PBL項(xiàng)目化學(xué)習(xí)設(shè)計(jì)》有感
- 高中語(yǔ)文日積月累23
評(píng)論
0/150
提交評(píng)論