馬孝賀+李莎
摘要:微軟的SQL Server數(shù)據(jù)庫系統(tǒng),因其各種優(yōu)點在軟件系統(tǒng)市場上占有比較大的比例,但是數(shù)據(jù)庫在使用過程中也會出現(xiàn)多種可以導致服務器運行速度變慢或降低數(shù)據(jù)訪問效率的事件發(fā)生。文章從多個方面講述了SQL Server數(shù)據(jù)庫系統(tǒng)調整和優(yōu)化策略,可以有效提高數(shù)據(jù)庫的查詢速度。
關鍵字:SQL Server;應用程序;B/S;數(shù)據(jù)復制
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)15-0012-02
基于微軟的SQL Server數(shù)據(jù)庫系統(tǒng),是目前很多軟件所使用的數(shù)據(jù)庫,其功能強大,而且兼容性能較好,適用于大多數(shù)的軟件開發(fā)系統(tǒng)。但是,任何一個數(shù)據(jù)庫系統(tǒng)在操作較長一段時間后,都可能存在一定的性能問題,這個性能問題包括多個方面,主要涉及數(shù)據(jù)庫的內存、操作系統(tǒng)、參數(shù)設置、操作應用程序及硬件等多個方面。因此,就像操作系統(tǒng)一樣,在一個數(shù)據(jù)庫系統(tǒng)運行一段時間后,對其進行優(yōu)化對整個軟件系統(tǒng)的正常運行起著非常重要的作用,可以有效促進軟件系統(tǒng)的穩(wěn)定性、可用性和高效性,節(jié)約系統(tǒng)開銷,解決系統(tǒng)瓶頸。
1 性能調整與優(yōu)化概述
性能調整是指的對系統(tǒng)的相關參數(shù)、應用程序、軟硬件系統(tǒng)進行優(yōu)化,從而可以有效改變系統(tǒng)性能的一種活動。對數(shù)據(jù)庫系統(tǒng)的性能優(yōu)化及調整主要包括對軟硬件配置、操作系統(tǒng)及數(shù)據(jù)庫管理系統(tǒng)的配置進行優(yōu)化,還包括對訪問這些配置的應用程序的分析與了解。
對數(shù)據(jù)庫性能是否優(yōu)秀的判定標準主要是看這個數(shù)據(jù)庫各個性能指標,一個數(shù)據(jù)庫的性能指標主要包含以下幾個部分:事務處理所占用的系統(tǒng)資源、事件的響應時間以及CPU的時間量。性能并不是一成不變的,而是隨著使用的時間和環(huán)境的變化而變化。數(shù)據(jù)庫系統(tǒng)的性能受使用應用程序、本身的體系結構和硬件設備性能及連接數(shù)目及資源等多個方面的影響。
所謂性能調整,就是通過優(yōu)化提高系統(tǒng)的高效性,消除系統(tǒng)使用瓶頸。一個系統(tǒng)是否高效,主要是看他的瓶頸,因為這個是系統(tǒng)性能限制的主要決定因素,可能是軟件,也可能是硬件部分。如果系統(tǒng)的瓶頸限制過大,則對數(shù)據(jù)庫系統(tǒng)的訪問和存儲及更新都有很大影響,減少系統(tǒng)瓶頸,可以將一個系統(tǒng)性能最大程度的發(fā)揮。為了有效去除系統(tǒng)瓶頸,對性能進行調整,必須采取一定的步驟和方法去調整所有和性能相關的組件,包括應用調整和SQLServer。
2 應用調整
對數(shù)據(jù)庫的性能優(yōu)化來說,最有可能導致數(shù)據(jù)庫性能產生變化的就是應用軟件的影響。應用調整相對于硬件來說更容易做到監(jiān)控和修改,也更容易顯示出效果來。應用的調整和優(yōu)化也可以影響到數(shù)據(jù)系統(tǒng)的后續(xù)步驟的調整,有效地減小系統(tǒng)開支,使普通的應用程序不至于占用太多的系統(tǒng)資源。應用調整一般來說是對SQL SERVER性能調整的第一步,也是關鍵的一步,主要包括應用程序調整、頁面應用調整、數(shù)據(jù)庫查詢語句調整等多個因素。
1)SQL語句優(yōu)化
數(shù)據(jù)庫性能優(yōu)化中,標準查詢語句(SQL)的優(yōu)化可以有效提高數(shù)據(jù)查詢、更新、插入的執(zhí)行效率。低效率的數(shù)據(jù)庫查詢語句,往往會占用過多的資源并訪問過多的數(shù)據(jù)庫,從而使系統(tǒng)的響應時間變長,嚴重影響系統(tǒng)的性能。通過優(yōu)化SQL語句,改變數(shù)據(jù)庫查詢方法或途徑,可以有效提高系統(tǒng)的性能。數(shù)據(jù)庫系統(tǒng)的應用最多的就是將數(shù)據(jù)庫的數(shù)據(jù)顯示出來,這離不開數(shù)據(jù)庫的查詢語句,這也是影響系統(tǒng)性能最關鍵的一個步驟。微軟的SQL Server本身提供了數(shù)據(jù)庫的查詢和優(yōu)化方法,對常用的數(shù)據(jù)庫查詢語句進行分析,可以找到最佳的查詢語句,從而可以減少輸入/輸出次數(shù),提高執(zhí)行效率。但是微軟提供的查詢優(yōu)化器很難能夠完全解決查詢語句的優(yōu)化,比如語義方面的問題等。
2)B/S 模式優(yōu)化
目前很多軟件的開發(fā)模式都采用了基于B/S的模式,在這種模式下,用戶端無須在安裝多余的軟件,服務器將后臺處理的數(shù)據(jù)通過HTTP協(xié)議傳輸?shù)娇蛻舳恕_@種做法實際上減輕了前端客戶機的工作量,而將更的計算負載交給了數(shù)據(jù)庫服務器,所以在這種模式下對數(shù)據(jù)庫進行優(yōu)化可以取得不錯的效果,一般情況下采取以下的優(yōu)化策略。
Web應用程序優(yōu)化:
在B/S架構的軟件模型中,對數(shù)據(jù)庫系統(tǒng)的訪問是來自前端的數(shù)據(jù)庫查詢語句,所以Web應用程序優(yōu)化也主要表現(xiàn)在對大量查詢語句的優(yōu)化上,除了使用查詢優(yōu)化器進行優(yōu)化外,還要注意的查詢方法的基本操作原則就是,數(shù)據(jù)查詢要盡量少的涉及相關的數(shù)據(jù)庫和數(shù)據(jù)量,并且隨著查詢的進行,查詢語句要操作的數(shù)據(jù)量要迅速減小,并快速地顯示出來,這樣才不至于系統(tǒng)響應時間過長。
Web服務器優(yōu)化:
對Web服務器的優(yōu)化中,主要是對前端應用程序對數(shù)據(jù)庫的訪問做一定的限制,由于在B/S結構的系統(tǒng)中,客戶訪問服務器的訪問量很大,所以要對長期要求占用系統(tǒng)資源的客戶應用程序進行限制,以免出現(xiàn)服務器只為很少的客戶服務,而大量的服務在排除的現(xiàn)象發(fā)生。
運算負載與網絡分配:
在實際應用過程中,數(shù)據(jù)傳輸是不均衡的,有些網絡節(jié)點傳輸?shù)臄?shù)據(jù)多,有些網絡節(jié)點傳輸?shù)臄?shù)據(jù)少。對于持續(xù)進行大量數(shù)據(jù)傳輸?shù)木W絡節(jié)點來說,他需要對數(shù)據(jù)庫系統(tǒng)經常性訪問,可以考慮將其使用的網絡與其他網絡分割開來,這樣就不會影響其他的用戶訪問。對于有大量數(shù)據(jù)進行傳輸?shù)膽脕碚f,可以適當增加網絡包大小,以減少網絡傳輸次數(shù)。
3)對內存的有效管理
數(shù)據(jù)在計算機中處理,并不是在數(shù)據(jù)實際存儲的空間進行處理的,而是將數(shù)據(jù)調入到內存中進行處理,這是因為內存的速度要遠大于外存儲設備的存取速度。提高數(shù)據(jù)存取性能的最直接的方法就是增大物理內存,但是目前內存的大小還是有比較大的限制,所以如何合理利用內存更有效的處理數(shù)據(jù)成了內存有效管理的最有效的方法。在數(shù)據(jù)庫中高速緩存可以分成兩種,一種是數(shù)據(jù)調整緩存,一種是過程高速緩存。數(shù)據(jù)高速緩存主要早用來存儲數(shù)據(jù)、日志、索引有數(shù)據(jù)庫對象,而過程高速緩存主要用來存儲查詢計劃,觸發(fā)器等。
高速緩沖存儲器是存在于主存與CPU之間的一級存儲器,由靜態(tài)存儲芯片(SRAM)組成,容量比較小但速度比主存高得多,接近于CPU的速度。正常情況下高速度緩存應該占數(shù)據(jù)庫內存的20%,但是這個值應該隨著系統(tǒng)或數(shù)據(jù)傳輸?shù)囊蠖粩嗾{整,對于要求較高的應用程序或服務可以適當增加其高速緩存的比例。
可以將經常使用的數(shù)據(jù)庫或數(shù)據(jù)表固定到數(shù)據(jù)調整緩存上,這樣可以大大提高數(shù)據(jù)的查詢和處理速度。
4)充分利用臨時數(shù)據(jù)庫
在數(shù)據(jù)使用過程中,為了提高數(shù)據(jù)庫的利用效率,會對查詢產生的結果數(shù)據(jù)進行第二次使用,這個查詢的結果數(shù)據(jù)往往被存儲為臨時數(shù)據(jù)庫,這個臨時數(shù)據(jù)表可以被多個用戶所共享使用,如果對臨時數(shù)據(jù)進行充分利用,可以大大提高數(shù)據(jù)庫的查詢效率。通過以下步驟對臨時數(shù)據(jù)庫進入處理,可以提高其性能。
臨時數(shù)據(jù)庫的容量是可以定義的,擴大臨時數(shù)據(jù)庫的容量可以有效增加數(shù)據(jù)處理量。
可以將臨時數(shù)據(jù)庫保存下來,存儲在獨立的物理介質上,從而可以單獨調用。
如果臨時數(shù)據(jù)庫經常被訪問,可以考慮將其放面高速緩沖區(qū),以減少數(shù)據(jù)對磁盤的訪問次數(shù),提高數(shù)據(jù)執(zhí)行效率。
3 SQL SERVER調整
SQL SERVER調整與硬件調整是緊密相關的,是對數(shù)據(jù)庫服務器的性能調整。通過修改SQL Server的配置參數(shù)(configuration parameter), SQL SERVER調整包括改變它分配資源的方法以及它的工作方式。有些配置參數(shù)與資源的使用有關,有些則無關。那些與資源使用有關的參數(shù)緊密地依賴于系統(tǒng)中可用的硬件資源。這些參數(shù)必須基于系統(tǒng)中可用的硬件資源的類型與數(shù)量進行修改。例如,一個具有多處理器的系統(tǒng),如對稱多處理器((SMP)系統(tǒng),使用多個SQL SERVER線程(進程)的效果要比使用單處理器的系統(tǒng)工作得更好。具有許多可用內存的系統(tǒng)應該調整SQL SERVER,以充分利用這些附加的內存。應該修改輸入/輸出((I/O)參數(shù),以充分利用系統(tǒng)中所擁有的I/O系統(tǒng)類型。SQL SERVER調整與硬件調整包括為需求的工作量提供足夠的系統(tǒng)資源??偟恼f來,SQL SERVER調整涉及服務器硬件調整、數(shù)據(jù)庫優(yōu)化設計、SQL SERVER配置參數(shù)調整等內容。
數(shù)據(jù)復制優(yōu)化:
當今世界數(shù)據(jù)的傳輸量越來越大,而且應用程序的分布式計算程度越來越大,所以數(shù)據(jù)傳送給用戶過程的網絡就往往成了傳送的瓶頸。在數(shù)據(jù)傳輸中,數(shù)據(jù)庫管理員對網絡帶寬或網絡傳輸?shù)墓芾碜霾坏絿栏窨刂?,所以只能對?shù)據(jù)庫本身進行優(yōu)化來減少數(shù)據(jù)傳輸量。減少網絡的傳輸流量并不是減少數(shù)據(jù)的傳送量,而是減小數(shù)據(jù)包數(shù)量大小。在數(shù)據(jù)庫查詢中,對遠程數(shù)據(jù)庫的查詢有的時候會經過幾個服務器的數(shù)據(jù)傳輸,應該盡量減小從一個數(shù)據(jù)庫到另一個數(shù)據(jù)庫的傳輸流量,不同的數(shù)據(jù)的復制選項會有效減少網絡之間的數(shù)據(jù)傳輸量。
如圖1所示,這是一個分布式的數(shù)據(jù)庫環(huán)境,數(shù)據(jù)分別存儲在不同的位置,當客戶終端要發(fā)生數(shù)據(jù)訪問時,便會有數(shù)據(jù)從一個數(shù)據(jù)庫鏈接流向另外一個數(shù)據(jù)庫。當前的數(shù)據(jù)庫存儲形式,特別是移動數(shù)據(jù)庫的存儲,都是完全支持分布式的數(shù)據(jù)庫,數(shù)據(jù)庫的訪問不像以前那樣在一個服務器把對數(shù)據(jù)的操作全部完成。對數(shù)據(jù)庫之間數(shù)據(jù)流動采取的是數(shù)據(jù)復制的形式,事務處理往往在服務器和移動終端兩個方面進行。
在數(shù)據(jù)處理中,如果所有的數(shù)據(jù)都是標準的數(shù)據(jù)結構,都是統(tǒng)一的數(shù)據(jù)格式,則數(shù)據(jù)處理起來就方便很多,可以通過多個數(shù)據(jù)庫的跳轉直接訪問,但是目前的數(shù)據(jù)特別是動態(tài)數(shù)據(jù),很多都是非標準的數(shù)據(jù),在數(shù)據(jù)庫存儲和訪問非常冗長的數(shù)據(jù)的時候,往往要采數(shù)據(jù)復制的方式來縮短用戶訪問數(shù)據(jù)的有效路徑。數(shù)據(jù)復制無需通過網絡來完成數(shù)據(jù)庫的查詢功能,只要把遠程的數(shù)據(jù)復制到本地再來完成對數(shù)據(jù)的操作。
參考文獻:
[1]許平格.數(shù)據(jù)庫管理系統(tǒng)中查詢優(yōu)化的設計和實現(xiàn)[D].浙江大學,2005.
[2] 劉啟原,劉冶. 數(shù)據(jù)庫與信息系統(tǒng)安全[M].科學出版社,2011
[3] 微軟.SQL SERVER 2010企業(yè)版的安裝、配置和管理[M].高等教育出版社,2013.
[4] SQL Server數(shù)據(jù)庫性能優(yōu)化技術http://www.ittianxia.cn/html/database/MSSQL/20070413/11219.html.