趙凱 甄雷 劉宇
摘要
SQL Server數(shù)據(jù)庫在現(xiàn)實(shí)使用中,常常會(huì)出現(xiàn)數(shù)據(jù)量太大的狀況,若不能及時(shí)采取措施,就會(huì)降低系統(tǒng)的穩(wěn)定性,出現(xiàn)阻塞、長(zhǎng)時(shí)間等待、連接超時(shí)等問題。為此,本文從SQL Server數(shù)據(jù)庫內(nèi)容概述及其必要性入手,對(duì)其性能優(yōu)化展開探究。
【關(guān)鍵詞】SQL Server數(shù)據(jù)庫 性能優(yōu)化 應(yīng)用系統(tǒng)
增強(qiáng)SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)性能優(yōu)化,能夠較好的提高系統(tǒng)的應(yīng)用效果,減少在使用過程中出現(xiàn)的各種堵塞、連接超時(shí)等問題,從而使系統(tǒng)處于高效、穩(wěn)定的運(yùn)行中,滿足相關(guān)的信息管理系統(tǒng)多樣性需求。所以,在使用SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)處理現(xiàn)實(shí)問題中,要從多個(gè)方面著手,尋找到有效的方式,從而對(duì)系統(tǒng)進(jìn)行長(zhǎng)期、有效的維護(hù)優(yōu)化,為增強(qiáng)系統(tǒng)運(yùn)行服務(wù)能力提供有力的保障。
1 SQL Server數(shù)據(jù)庫內(nèi)容概述及其必要性
1.1 SQL Server數(shù)據(jù)庫內(nèi)容
SQL是結(jié)構(gòu)化查詢語言的縮寫,它是專門為了數(shù)據(jù)庫而建立的操作命令集,是一種功能多樣的數(shù)據(jù)庫語言。SQL功能強(qiáng)大、方便易學(xué),已經(jīng)是數(shù)據(jù)庫操作的基礎(chǔ),同時(shí),現(xiàn)在全部的數(shù)據(jù)庫大多都支持SQL。
1.2 SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)性能優(yōu)化的必要性
因?yàn)镾QL Server數(shù)據(jù)庫在信息管理中十分重要,在實(shí)踐過程中一定要確保其運(yùn)行良好,并通過性能優(yōu)化,提升系統(tǒng)的響應(yīng)速度,增強(qiáng)數(shù)據(jù)庫應(yīng)用系統(tǒng)的運(yùn)行效率。數(shù)據(jù)庫應(yīng)用系統(tǒng)在長(zhǎng)期的使用后進(jìn)行科學(xué)的優(yōu)化,能夠減少系統(tǒng)出現(xiàn)故障的幾率,并提升其穩(wěn)定性,從而大大節(jié)約開發(fā)設(shè)計(jì)成本。以上方面的不同內(nèi)容,客觀的展現(xiàn)出了SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)性能優(yōu)化的重要性。所以,在使用SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)時(shí),要從多個(gè)方向展開考慮,并在科學(xué)合理的優(yōu)化行為下,實(shí)現(xiàn)對(duì)性能的優(yōu)化。
2 SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)性能優(yōu)化的方式
2.1 SQL語句的優(yōu)化
SQL語句是唯一一種可以對(duì)數(shù)據(jù)庫進(jìn)行操作的方式,應(yīng)用程序的執(zhí)行最終還是對(duì)SQL語句的執(zhí)行,可以說SQL語句的效率決定了數(shù)據(jù)庫系統(tǒng)的性能。好的查詢方式常常能夠讓程序性能提升數(shù)十倍。DBMS是如下進(jìn)行查詢計(jì)劃的:首先進(jìn)行語句的詞法、語法檢查,然后把語句傳輸給DBMS的查詢優(yōu)化器,優(yōu)化器進(jìn)行存取路徑優(yōu)化與代數(shù)優(yōu)化后,由預(yù)編譯模塊處理語句并生成查詢規(guī)劃,之后在某一時(shí)間傳遞給系統(tǒng)處理執(zhí)行,并返回執(zhí)行結(jié)果。現(xiàn)在使用的大多數(shù)數(shù)據(jù)庫產(chǎn)品例如Sybase、Oracle等多是使用基于代價(jià)的優(yōu)化方式,該方式能夠按照從系統(tǒng)字典表中獲取的數(shù)據(jù)來估計(jì)各個(gè)查詢規(guī)則的代價(jià),并選擇最優(yōu)方式。目前優(yōu)化SQL語句的方式大概有以下幾種:
(1)防止檢索表中的全部字段。在原有的代碼中有select* from t_ks order by ksbms.jdese這樣的語句,該語句在執(zhí)行時(shí)每次都會(huì)對(duì)表中全部字段展開掃描,從而增加了檢索的時(shí)間,實(shí)際上應(yīng)該盡量避免select*的存在,使用所需的列代替*,避免多余的列。例如可以把語句改為select name,xb,zydm from t_ksorder by ks_bmsjdeSC。
(2)避免在WHERE條件中使用非聚合表達(dá)式。由于非聚合表達(dá)式不容易使用到索引,往往造成SQL Server進(jìn)行大規(guī)模的掃描。例如!=、ISNULL或ISNOTNULL、IN、NOTIN等操作符組成的表達(dá)式都是非聚合表達(dá)式,該表達(dá)式會(huì)極大的降低查詢效率。
(3)常用操作符的優(yōu)化。is null或is notnull操作符,判斷字段是否為空一般是不會(huì)應(yīng)用索引的,因?yàn)樗饕凰饕罩?。也就是說如果某列存在空值,即使對(duì)該列建索引也不會(huì)提高性能??梢圆捎闷渌嗤δ艿牟僮鬟\(yùn)算代替,如:a is not null改為a>0或a>”。優(yōu)化group by語句,可以將不需要的記錄在之前過濾掉。
2.2使用存儲(chǔ)過程
存儲(chǔ)過程是一組編譯在單個(gè)執(zhí)行計(jì)劃中的Transact-SQL語句。該存儲(chǔ)過程可以在所有應(yīng)用中進(jìn)行邏輯的一致性實(shí)現(xiàn),它需要執(zhí)行一個(gè)正常運(yùn)行任務(wù)的SQL語句與邏輯能夠一次性被測(cè)試、編碼、設(shè)計(jì),并被再次使用。需要執(zhí)行該任務(wù)的應(yīng)用能夠簡(jiǎn)單執(zhí)行該存儲(chǔ)過程,若使用存儲(chǔ)過程,就能夠?yàn)閼?yīng)用返回一些值,也就能夠在不更改應(yīng)用的狀況下改變數(shù)據(jù)庫存儲(chǔ)過程與布局。只要依舊返回預(yù)期的類型與數(shù)量的值,則應(yīng)用代碼就不用再改變。
同時(shí),一個(gè)應(yīng)用把一個(gè)任務(wù)當(dāng)作一系列SQL語句執(zhí)行。第一條語句的輸入為后面的SQL語句提供了數(shù)據(jù),且有一個(gè)條件表達(dá)式?jīng)Q定了SQL語句中的哪些部分將被執(zhí)行。若把這些SQL語句與條件邏輯結(jié)合起來合并在存儲(chǔ)過程中,就可以變成服務(wù)器中單獨(dú)執(zhí)行計(jì)劃中的內(nèi)容。應(yīng)用程序不需要傳輸存儲(chǔ)過程中的全部SQL語句:它們只需要傳輸包含過程名與參數(shù)值的EXECUT或CALL語句,從而達(dá)到提升系統(tǒng)性能的目的。
2.3調(diào)優(yōu)數(shù)據(jù)庫服務(wù)器
改變SQL Server的配置參數(shù)能夠優(yōu)化數(shù)據(jù)庫系統(tǒng),SQL Server調(diào)整包含改變它分配資源的方式,一些配置參數(shù)和資源的使用并沒有關(guān)系,而那些與資源使用有關(guān)的參數(shù)和系統(tǒng)中的硬件資源關(guān)系十分緊密,這種參與依賴于系統(tǒng)中可用硬件資源數(shù)量與類型的改變。例如,一個(gè)擁有多處理器的系統(tǒng),使用多個(gè)SQLServer線程的效果要遠(yuǎn)優(yōu)于使用單處理器。擁有多個(gè)可用內(nèi)存的系統(tǒng)需要改變SQL Server,從而充分的使用這些附加的內(nèi)存。還可以通過改變輸入/輸出參數(shù),達(dá)到充分使用系統(tǒng)中全部I/O系統(tǒng)類型的目的。
3結(jié)語
以上方式的科學(xué)使用,能夠較好的實(shí)現(xiàn)對(duì)SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)的優(yōu)化,從而增強(qiáng)其潛在使用價(jià)值,讓信息管理系統(tǒng)更加完善,確保SQL Server數(shù)據(jù)庫應(yīng)用系統(tǒng)擁有穩(wěn)定的使用效果。
參考文獻(xiàn)
[1]楊薇,劉陽,基于SQL Server的數(shù)據(jù)庫應(yīng)用系統(tǒng)性能的優(yōu)化[J].電子測(cè)試,2013 (09):140-141.
[2]王學(xué)慧.基于SQL Server的數(shù)據(jù)庫應(yīng)用系統(tǒng)性能優(yōu)化研究[J].電子科學(xué)技術(shù),2015,02 (01):95-99.