布合力其木·艾爾
摘要:當前,企事業(yè)單位日常工作越來越離不開各種信息管理系統(tǒng)的支持,而數據庫性能優(yōu)化問題則長期得不到良好解決。該文針對信息管理系統(tǒng)運行中SQL Server 2008數據庫瓶頸問題進行分析研究,提出數據庫性能優(yōu)化和性能調整方案,對促進信息管理系統(tǒng)的高效應用有著十分重要的現實意義。
關鍵詞:SQL Server 2008數據庫;數據庫優(yōu)化;性能優(yōu)化
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)06-0003-03
SQL Server 2008數據庫性能對其可用性和可靠性有著重要影響,大部分數據庫系統(tǒng)在長期運行的環(huán)境下都會產生性能問題,這些性能問題包括數據庫服務器、內存、硬件設備、軟件系統(tǒng)等多個方面。由此,對SQL Server 2008數據庫系統(tǒng)進行性能優(yōu)化和調整,對于促進數據庫系統(tǒng)的高效運行有著重要左右。SQL Server 2008數據庫的性能優(yōu)化與調整設計多個層次和不同方面,必須進行統(tǒng)一規(guī)劃,分步實施,再根據系統(tǒng)分析做出適當調著,這樣能夠有效提高數據庫系統(tǒng)的可用性和穩(wěn)定性,徹底解決性能瓶頸問題,從根本上節(jié)約系統(tǒng)開銷。
1 SQL Server 2008數據庫優(yōu)化的目標
1.1 提高吞吐量
SQL Server 2008數據庫系統(tǒng)吞吐量指的是規(guī)定時間內服務器能夠處理的數據總數,即每個單元時間內實現的工作量,單元時間以秒計算,該值越高代表吞吐量越高。數據庫系統(tǒng)吞吐量的提高主要包括兩種方法:一是在相同的數據資源環(huán)境下產生更多工作量;二是降低總體反應時間,實現完成工作量速度的提高,此時可以增加用戶等待的資源,例如增加CPU數量等。在同一個SQL Server 2008數據庫系統(tǒng)中,提高吞吐量和縮短反應時間相互對立。如果延長反應時間,則吞吐量高;如果縮短反應時間,則吞吐量低。多個用戶在相同時間內使用數據庫系統(tǒng),每個用戶的吞吐事務量量會更大,但要等待的時間卻需要延長。相反,如果減少在相同時間內使用數據庫系統(tǒng)的用戶數量,每個用戶的反應時間會縮短,但吞吐事務量的總數也將降低。
1.2 縮短響應時間
SQL Server 2008數據庫系統(tǒng)響應時間指的當用戶完成最后一個提交指令動作后,全部數據呈現在顯示器上的所需時間。系統(tǒng)響應時間通常以秒計算,數值越低越好。數據庫系統(tǒng)的響應時間本質是用戶等待終端后臺處理事務量耗費的時間,也是用戶當用戶出現被處理事務直觀反應時的時間量。SQL Server 2008數據庫系統(tǒng)的響應時間包括服務時間和等待時間,系統(tǒng)服務時間與用戶等待時間的總和作為系統(tǒng)響應時間。由此可見,縮短數據庫系統(tǒng)響應時間主要包括兩種方法:一是提高數據庫的吞吐量,降低系統(tǒng)服務時間;減少同時訪問數據庫的用戶數量,降低用戶等段時間。
1.3 支持更多用戶
在對SQL Server 2008數據庫系統(tǒng)進行調整配置時,必須考慮到該數據庫系統(tǒng)與其他系統(tǒng)、客戶端的連通能力。對于為了提高與大量客戶連通能力而調整數據庫系統(tǒng)的操作來說,終端內存也是不可忽視的重點因素。管理員需要明確了解用戶對終端內存的使用需求,保證在高峰時期內用戶對數據庫系統(tǒng)的操作不會溢出。此時,系統(tǒng)管理員可以增加一些內存配置,以滿足用戶的訪問需求,但需要實時監(jiān)控操作系統(tǒng)資源變化情況。同時,系統(tǒng)管理員也可以根據自己的實際工作經驗對用戶所需系統(tǒng)資源進行判斷,盡量控制用戶對系統(tǒng)資源的需求量,時刻監(jiān)控資源使用情況。隨著用戶數量的不斷增加,系統(tǒng)管理員要重新調整資源分配量,確保做到心中有數。
1.4 提高容錯能力
對于SQL Server 2008數據庫系統(tǒng)來說,容錯能力是體現系統(tǒng)性能的重點。對于中大型企業(yè)來說,數據庫系統(tǒng)的停止運行在任何情況下都是災難性的。因此,系統(tǒng)管理員需要做到定期檢查和備份數據庫,以此來提高數據庫系統(tǒng)的容錯能力。當對SQL Server 2008數據庫系統(tǒng)的容錯能力要求較高時,數據庫系統(tǒng)的優(yōu)化調整必須注意以下兩點:一是數據庫系統(tǒng)的配置應該選擇RAID磁盤陣列,減少磁盤陣列發(fā)生故障的次數;二是應該配置ECC內存來確保數據庫系統(tǒng)的容錯性。對于要求SQL Server 2008數據庫7*24小時不間斷運行的企業(yè)來說,系統(tǒng)管理員要及時配置冗余備份系統(tǒng),確保當主機停機時備用系統(tǒng)能夠立刻啟動。
1.5 縮短加載時間
很多SQL Server 2008數據庫系統(tǒng)運行有著以下需求:白天數據庫系統(tǒng)正常運行,夜間某個時段將部分數據量上載到系統(tǒng)中,使系統(tǒng)能在第二天對其進行處理。通常情況下,數據上載時間是有限且固定的,在這段時間內必須完成。如果要確保系統(tǒng)上載數據對時間控制的要求,系統(tǒng)管理員需要額外配置硬件設備,導致整體成本的提高。因此,系統(tǒng)管理員需要對I/O子系統(tǒng)進行適當調整,進而縮短數據加載耗費的時間。但是,I/O子系統(tǒng)的調整也可能會對系統(tǒng)其他方面帶來影響,在縮短數據加載的同時,及時優(yōu)化數據庫系統(tǒng)運行性能,其影響程度可降至最低。
2 SQL Server 2008數據庫常見的瓶頸問題
2.1 CPU問題
CPU是支持終端運行的重要設備,如果CPU運行長期處于極限狀態(tài),那么CPU就成為了整個系統(tǒng)的瓶頸問題,尤其是同一時間內用戶對系統(tǒng)資源進行訪問時,CPU的計算處理能力至關重要。一般情況下,雖然由操作系統(tǒng)內核負責分配CPU資源給SQL Server 2008數據庫系統(tǒng)使用,但當進程較多時,很容易帶來CPU“卡死”的問題。
2.2 內存問題
當計算機系統(tǒng)運行時,請求數據和等待數據全都暫時存儲在系統(tǒng)內存中。如果系統(tǒng)內存不足,很容易造成高速緩沖區(qū)命中率低,用戶請求的數據不再緩沖區(qū)中,使計算機操作系統(tǒng)頻繁換頁,進一步增加了I/O子系統(tǒng)的開銷,最終出現數據庫系統(tǒng)瓶頸問題。
2.3 存儲設備問題
存儲SQL Server 2008數據庫系統(tǒng)數據信息的設備包括CD-ROM驅動器、硬盤驅動器等。系統(tǒng)在單元時間內處理I/O數量是固定不變的,當CPU運行中要求I/O速率超過系統(tǒng)速率時,就會帶來存儲設備瓶頸問題的發(fā)生。
2.4 網絡傳輸問題
當網絡負荷量過大,網絡數據傳輸速度無法達到網絡部件提出的需求時,網絡瓶頸問題就會出現。只有降低SQL Server 2008數據庫系統(tǒng)的吞吐量,延長響應時間,才能解決該問題。
3 SQL Server 2008數據庫數性能優(yōu)化的實施
3.1 優(yōu)化數據庫設計
要實現SQL Server 2008數據庫系統(tǒng)的最佳性能,關鍵在數據庫設計時要有一個完善的設計方案。數據庫設計方案要先于信息管理系統(tǒng)開發(fā)之前完成。雖然SQL Server 2008數據庫系統(tǒng)本身已經針對自身進行了性能調節(jié),但如果數據庫設計存在結構問題,后期無論如何對數據庫系統(tǒng)進行性能優(yōu)化和調整都無法取得良好效果。因此,只有確保數據庫設計的邏輯設計與物理設計功能完善,結構合理,才能真正提高SQL Server 2008數據庫系統(tǒng)性能。
3.2 優(yōu)化應用程序結構
在信息管理系統(tǒng)開發(fā)之前,要根據用戶實際需求設計SQL Server 2008數據庫體系結構。傳統(tǒng)的C/S架構模式適用于用戶數量少、開發(fā)規(guī)模小、網絡運行環(huán)境安全的單一數據庫設計;如果用戶數量較多,系統(tǒng)資源有限,不能時刻確保網絡運行環(huán)境安全,在高峰時期會出現大量客戶提出訪問請求的情況下,可以采用多體系B/S架構模式完成數據庫設計。
3.3 優(yōu)化應用程序
據調查研究顯示,對SQL Server 2008數據庫硬件設備、操作系統(tǒng)、網絡環(huán)境和數據參數的優(yōu)化獲得的性能提升只占總體性能提升的40%左右,剩余60%左右的數據庫系統(tǒng)性能提升全部來源于對應用程序的優(yōu)化和調整。應用程序的性能優(yōu)化包括兩個方面:SQL語句和源代碼。SQL語句占用數據庫系統(tǒng)資源的80%左右,應用程序對數據庫系統(tǒng)的請求的實質是SQL語句對數據庫系統(tǒng)的請求,SQL語句的處理效率直接對數據庫系統(tǒng)性能產生影響。因此,對不合理的SQL語句進行優(yōu)化調整能夠切實提高數據庫系統(tǒng)的內存命中率,降低網絡帶寬占用比,從而進一步顯著改善數據庫系統(tǒng)性能。
3.4 調整內存分配
SQL Server 2008數據庫系統(tǒng)內存包括可共享內存、運行時內存和永久性內存,這三種內存的合理分配使用才能實現最優(yōu)性能。通常情況下包括兩條調整原則:一是使分配的內存獲得最大收益,致力于解決利益最大化的問題;二是使分配的內存之間競爭最小化,數據庫瓶頸問題主要是延遲等待,應該盡可能解決這個問題。
3.5 優(yōu)化操作系統(tǒng)性能
SQL Server 2008數據庫服務器的性能與操作系統(tǒng)實際性能有著直接聯系。因此,針對操作系統(tǒng)進行優(yōu)化調整的目的是為了減少內存交換和分頁。如果必須以增加內存交換和分頁來達到獲取更多內存的目的,不但無法產生良好效果,甚至會進一步降低數據庫系統(tǒng)性能。由此可見,對操作系統(tǒng)的優(yōu)化調整包括以下幾個方面:首先,為SQL Server 2008數據庫規(guī)劃資源;其次,更換調整系統(tǒng)內存配置;最后,在數據庫服務器中設置進程優(yōu)先級別。
4 產品訂單信息管理系統(tǒng)數據庫優(yōu)化設計方案
4.1 系統(tǒng)開發(fā)模式
本文以某企業(yè)產品訂單信息管理系統(tǒng)為例,分析了在系統(tǒng)開發(fā)設計中如何做到優(yōu)化數據庫性能。
目前,在信息管理系統(tǒng)設計中普遍采用的開發(fā)模式包括C/S模式和B/S模式兩種,分別是客戶機/服務器和瀏覽器/服務器模式。C/S開發(fā)模式能夠將任務進行合理分配,在分別給客戶機端和服務器端,這種方式充分利用了兩端硬件設備資源,同時降低了系統(tǒng)資源開銷,早期開發(fā)的信息管理系統(tǒng)大多采用C/S開發(fā)模式。B/S開發(fā)模式是針對C/S模式的改進,可以實現通過瀏覽器呈現用戶界面,部分事務邏輯能夠在瀏覽器前端實現,主要事務邏輯在服務器后端實現,以此形成了三層體系架構方式。因此,產品訂單信息管理系統(tǒng)應該采用B/S開發(fā)模式,確保系統(tǒng)界面友好,可靠性強,易于維護。
4.2 系統(tǒng)開發(fā)平臺
1)服務器端
操作系統(tǒng):Windows 7
數據庫系統(tǒng):SQL Server 2008
2)客戶端
操作系統(tǒng):Windows 7
開發(fā)語言:SQL Server 2008
4.3 數據庫設計
企業(yè)產品訂單信息管理系統(tǒng)的數據庫設計是否完善對系統(tǒng)性能有著重大影響。由此,系統(tǒng)數據庫設計應該借鑒大型數據庫的設計原則和流程。在數據庫系統(tǒng)的整個生命周期中,設計最初時期要爭取實現數據庫性能優(yōu)化的效益最大化,因此,企業(yè)產品訂單信息管理系統(tǒng)的數據庫模式采用3NF標準,允許出現部分冗余數據。
數據庫表設計中包括用戶基本信息表、用戶詳細信息表、產品基本信息表、產品詳細信息表、訂單基本信息表和訂單詳細信息表,這6張數據庫表共占1M存儲空間。
用戶基本信息表:主鍵是用戶編號。表中包括了在該企業(yè)訂購過產品的用戶信息。
用戶詳細信息表:主鍵和外鍵都是用戶編號。該表存儲在企業(yè)訂購過產品的用戶的個人信息,包括姓名、性別、手機號碼、收貨地址和郵箱等。
產品基本信息表:主鍵是產品編號。表中包括各種產品的采購時間、采購數量、庫存數量、采購人員信息。
產品詳細信息表:主鍵和外鍵都是產品編號。該表用于存儲產品詳細信息,包括產品名稱、所屬類別、保質時間、價格變動等。
訂單基本信息表:主鍵是訂單編號,外鍵是用戶編號。該表用于存儲每個訂單產生的精確時間、用戶編號、訂單受理人員等信息。
訂單詳細信息表:主鍵和外鍵都是訂單編號和產品編號。該表用于存儲每一筆訂單生成時產生的產品編號、產品名稱、產品訂購數量等信息。
參考文獻:
[1] 陳忠菊. 試論SQL server數據庫的優(yōu)化探索[J]. 科技創(chuàng)新導報,2015(14):41.
[2] 王強. 大數據背景下基于B-樹結構的SQL Server數據優(yōu)化策略研究[J]. 電腦知識與技術,2015(14):4-5.
[3] 陳林琳. SQL Server數據庫系統(tǒng)的性能優(yōu)化策略研究[J]. 網絡安全技術與應用,2014(12):37+39.
[4] 王學慧. 基于SQL Server的數據庫應用系統(tǒng)性能優(yōu)化研究[J]. 電子科學技術,2015(1):95-99.
[5] 周濤,楊麗紅,張軍, 等. SQL Server2005大型數據庫優(yōu)化之表分區(qū)詳解[J]. 云南大學學報:自然科學版,2013(S2):59-62.