譚嶠
摘 要 隨著計(jì)算機(jī)技術(shù)的突飛猛進(jìn),大多數(shù)企業(yè)都在大量使用SQL Server數(shù)據(jù)庫,其具有存儲(chǔ)容量大、方便查詢的特點(diǎn),因此,本文首先對(duì)SQL Server數(shù)據(jù)庫的特點(diǎn)進(jìn)行分析,針對(duì)SQL Server數(shù)據(jù)庫的常見問題提出相應(yīng)的優(yōu)化數(shù)據(jù)庫性能優(yōu)化策略。
關(guān)鍵詞 SQL Server數(shù)據(jù)庫;特點(diǎn);優(yōu)化策略
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)08-0054-01
針對(duì)SQL Server數(shù)據(jù)庫性能優(yōu)化,SQL Server數(shù)據(jù)庫是由數(shù)據(jù)存儲(chǔ)、語言編程、數(shù)據(jù)庫查詢等部分組成的,因此,對(duì)SQL Server數(shù)據(jù)庫中數(shù)據(jù)存儲(chǔ)、語言編程、數(shù)據(jù)庫查詢等進(jìn)行分析,并提出相應(yīng)優(yōu)化策略,從而提高SQL Server數(shù)據(jù)庫系統(tǒng)的運(yùn)行效率。
1 SQL Server數(shù)據(jù)庫系統(tǒng)的性能分析
SQL Server數(shù)據(jù)庫系統(tǒng)主要是通過SQL(結(jié)構(gòu)化查詢語言)來實(shí)現(xiàn)的,通過高性能的設(shè)計(jì)和先進(jìn)的管理系統(tǒng),使SQL Server數(shù)據(jù)庫系統(tǒng)的性能變得更強(qiáng)大,當(dāng)用戶在操作SQL Server數(shù)據(jù)庫系統(tǒng),由于SQL Server數(shù)據(jù)庫支持Windows圖形化管理工具和遠(yuǎn)程系統(tǒng)管理,這為Windows系統(tǒng)管理者帶來了很大方便。另外,由于SQL Server數(shù)據(jù)庫具有強(qiáng)大的處理功能和兼容性,其主要通過SQL語言來實(shí)現(xiàn)一個(gè)對(duì)外開放的系統(tǒng)信息處理數(shù)據(jù)庫平臺(tái),數(shù)據(jù)庫系統(tǒng)不僅具有強(qiáng)大的數(shù)據(jù)恢復(fù)功能,也設(shè)置了強(qiáng)大的管理工具,因此,SQL Server數(shù)據(jù)庫系統(tǒng)得到用戶極大的青睞。
2 SQL Server數(shù)據(jù)庫性能優(yōu)化策略研究
1)數(shù)據(jù)庫語言編程優(yōu)化。在設(shè)計(jì)階段,數(shù)據(jù)庫系統(tǒng)應(yīng)遵循規(guī)范化的設(shè)計(jì)原則,根據(jù)用戶的實(shí)際應(yīng)用需求,通常用戶的實(shí)際應(yīng)用需求主要包括數(shù)據(jù)庫功能、性能、操作方便等方面的需求,因此,在語言編寫中,應(yīng)注重?cái)?shù)據(jù)庫設(shè)計(jì)的優(yōu)化性,有的計(jì)算機(jī)編程人員為了編寫方便,大量的使用Select語句,通過Select語句可以對(duì)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)進(jìn)行查詢,但是,Select語句的過多使用,容易造成數(shù)據(jù)庫系統(tǒng)運(yùn)行緩慢,需要較長的時(shí)間才能從數(shù)據(jù)庫系統(tǒng)中提取數(shù)據(jù),因此,數(shù)據(jù)庫系統(tǒng)在使用過程中,應(yīng)注重Select語句的合理使用,并且也應(yīng)注重語句的書寫規(guī)范,避免因語句大小寫輸入錯(cuò)誤而影響數(shù)據(jù)庫的數(shù)據(jù)查詢,通過縮短數(shù)據(jù)庫查詢時(shí)間,從而提高數(shù)據(jù)庫系統(tǒng)運(yùn)行效率。另外,在數(shù)據(jù)庫系統(tǒng)查詢中,將會(huì)使用Where函數(shù),但是,應(yīng)避免在Where函數(shù)中進(jìn)行數(shù)據(jù)的計(jì)算,若計(jì)算的數(shù)據(jù)過多、過大,則容易造成數(shù)據(jù)庫系統(tǒng)索引失效,進(jìn)而影響數(shù)據(jù)庫系統(tǒng)運(yùn)行效率。
2)數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)優(yōu)化。數(shù)據(jù)存儲(chǔ)也是SQL Server數(shù)據(jù)庫的一項(xiàng)重要性能,數(shù)據(jù)庫存儲(chǔ)主要通過SP編寫中SQL語言來實(shí)現(xiàn)的,優(yōu)化數(shù)據(jù)庫的存儲(chǔ)過程,通過開發(fā)人員的編程控制來優(yōu)化數(shù)據(jù)庫性能,采用跨庫操作的方式,如建立Table數(shù)據(jù)庫、View數(shù)據(jù)庫,但是,在數(shù)據(jù)庫系統(tǒng)存儲(chǔ)優(yōu)化過程中,大多數(shù)開發(fā)人員都沒有在SQL Server數(shù)據(jù)庫系統(tǒng)中建立View數(shù)據(jù)庫,而是直接使用,導(dǎo)致Table數(shù)據(jù)庫、View數(shù)據(jù)庫在SP中無法識(shí)別顯示。在優(yōu)化過程中,開發(fā)人員也沒有嚴(yán)格按照數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)規(guī)范標(biāo)準(zhǔn)來編寫語句,尤其是SQL語句的編寫,如SQL語句中的Holdlock字句,在編寫過程中過多使用Holdlock字句,則容易造成數(shù)據(jù)庫系統(tǒng)運(yùn)行速度緩慢,也會(huì)影響數(shù)據(jù)庫中的索引性能,對(duì)于數(shù)據(jù)庫中的索引,其主要功能是通過查詢數(shù)據(jù)庫中的列,并創(chuàng)建索引數(shù)據(jù)庫,通過直接訪問Where中特定條件的數(shù)據(jù)列表,這樣就可以減少數(shù)據(jù)庫存儲(chǔ)時(shí)間來優(yōu)化查詢操作,若數(shù)據(jù)庫中的索引使用不規(guī)范,同樣也會(huì)影響數(shù)據(jù)庫系統(tǒng)運(yùn)行效率,因此,在創(chuàng)建數(shù)據(jù)庫時(shí),OLTP表應(yīng)小于七個(gè)索引,避免因索引過大而造成數(shù)據(jù)庫查詢緩慢,若數(shù)據(jù)庫存儲(chǔ)過大,也容易造成數(shù)據(jù)庫系統(tǒng)運(yùn)行緩慢,為了控制數(shù)據(jù)庫索引,應(yīng)定期對(duì)數(shù)據(jù)庫索引進(jìn)行重建,通過重新編譯數(shù)據(jù)庫存儲(chǔ)過程,提高數(shù)據(jù)庫系統(tǒng)的運(yùn)行效率。
3)數(shù)據(jù)庫查詢優(yōu)化。數(shù)據(jù)庫查詢是SQL Server數(shù)據(jù)庫系統(tǒng)的主要性能,優(yōu)化數(shù)據(jù)庫系統(tǒng)查詢功能,以便于用戶在短時(shí)間內(nèi)尋找到需要的數(shù)據(jù)。SQL Server數(shù)據(jù)庫性能優(yōu)化主要體現(xiàn)在查詢速度的優(yōu)化,但是,索引的缺陷容易導(dǎo)致數(shù)據(jù)庫查詢速度變慢,而索引存在的缺陷主要是受數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)而造成的,因此,在程序設(shè)計(jì)過程中,應(yīng)注重索引數(shù)據(jù)列表的創(chuàng)建,并合理計(jì)算數(shù)據(jù)庫索引列表的創(chuàng)建,可以采用優(yōu)化器來查看數(shù)據(jù)庫列表中的相關(guān)索引,并檢驗(yàn)索引是否能訪問數(shù)據(jù)庫中的數(shù)據(jù),但是,如何才能判斷數(shù)據(jù)庫創(chuàng)建的索引能用于訪問數(shù)據(jù),由于索引的工作原理是根據(jù)數(shù)據(jù)庫中列的順序構(gòu)造來匹配查詢的字句,當(dāng)索引中的列的第一個(gè)前綴與用戶編寫的查詢字句中的列完全匹配時(shí),這樣的索引才能用于訪問數(shù)據(jù)。索引的常見方為分簇索引,其主要工作原理是索引中列的第一個(gè)前綴與查詢字句不相匹配時(shí),可以通過索引中列的次要列與查詢字句進(jìn)行匹配,若兩者相互匹配,則索引能用于訪問數(shù)據(jù)。
對(duì)于SQL Server數(shù)據(jù)庫查詢優(yōu)化,可以采用SQL Server優(yōu)化器來查看數(shù)據(jù)庫中查詢字句的規(guī)范性,一般情況下,SQL Server查詢優(yōu)化通過限制不等關(guān)系符<>的字句來實(shí)現(xiàn),若不等關(guān)系符<>字句使用過多,字句選擇范圍擴(kuò)大,導(dǎo)致用戶很難在SQL Server數(shù)據(jù)庫系統(tǒng)中查詢到相關(guān)數(shù)據(jù),另外,由于SQL Server數(shù)據(jù)庫系統(tǒng)中含有不可優(yōu)化的子句,而不可優(yōu)化的子句則可以通過執(zhí)行計(jì)劃用表掃描來查詢相關(guān)數(shù)據(jù)。因此,在優(yōu)化查詢中,應(yīng)盡可能減少數(shù)據(jù)行的記錄和數(shù)據(jù)列的排序,若需要做大量數(shù)據(jù)排序,應(yīng)采用字符串排序的方式來進(jìn)行列的排序,若需要多表查詢,應(yīng)減少數(shù)據(jù)庫連接查詢的使用,另外,對(duì)于數(shù)據(jù)庫查詢中Where子句的使用,應(yīng)多使用and連接,減少長字符串連接或or連接的使用。
3 結(jié)束語
SQL Server數(shù)據(jù)庫系統(tǒng)在社會(huì)經(jīng)濟(jì)發(fā)展中得到廣泛應(yīng)用,其有效解決數(shù)據(jù)龐大所存在的問題,SQL Server數(shù)據(jù)庫系統(tǒng)的應(yīng)用,方便了用于對(duì)數(shù)據(jù)的查詢。
參考文獻(xiàn)
[1]谷震離.數(shù)據(jù)庫設(shè)計(jì)對(duì)SQL Server數(shù)據(jù)庫性能優(yōu)化分析[J].計(jì)算機(jī)與網(wǎng)絡(luò),2007(08):44-45,48.
[2]林元彥.SQL Server數(shù)據(jù)庫性能分析與優(yōu)化[J].電子技術(shù)與軟件工程,2013(17).
[3]馮艷.SQL Server數(shù)據(jù)庫運(yùn)用及其性能優(yōu)化分析[J].軟件導(dǎo)刊,2012(03).endprint