相信不少的朋友,無論是做開發(fā)、架構(gòu)的,還是DBA等,都經(jīng)常聽說“調(diào)優(yōu)”這個詞。說起“調(diào)優(yōu)”,可能會讓很多技術人員心頭激情澎湃,也可能會讓很多人感覺苦惱。當然,也有很多人對此不屑一顧,因為并不是每個人接觸到的項目都很大,也不是每個人做的項目都對性能要求很高。
在主流的企業(yè)級開發(fā)和互聯(lián)網(wǎng)應用中,數(shù)據(jù)庫的重要性是不言而喻的,而數(shù)據(jù)庫的性能對于整個系統(tǒng)的性能而言也是至關重要的,這里無庸贅述。
sqlserver的性能調(diào)優(yōu),其實是個很寬廣的話題。坦白講,想從概念到實踐的完全講清楚并掌握透徹,可能至少需要幾本書的內(nèi)容。本文只是一個概念級的總結(jié),希望讀者能對此有新的認識,在調(diào)優(yōu)路上有所幫助。如果感興趣的朋友很多,后續(xù)可能會分享一些實戰(zhàn)經(jīng)驗。
首先搞清楚,性能調(diào)優(yōu)的目標
從最直觀,最常見的角度來講,主要包含如下兩點:
優(yōu)化響應時間
何為“優(yōu)化響應時間” 呢?說的通俗點,就是經(jīng)過調(diào)優(yōu)后,執(zhí)行查詢、更新等操作的時候,數(shù)據(jù)庫的反應速度更快,花費的時間更少。
比較常見的,以前執(zhí)行某條sql查詢語句,可能需要3秒鐘,加了索引后,1秒鐘不到就搞定了。加索引,這也是最典型最"廉價"的優(yōu)化手段。
在做“優(yōu)化響應時間”時,需要了解:用戶環(huán)境,程序,環(huán)境,用戶和數(shù)據(jù)等方面的知識。
優(yōu)化吞吐量
說起“吞吐量”,那就要想到“并發(fā)”了。其實就是“同時處理請求”的能力。如何提高數(shù)據(jù)庫"抗并發(fā)"的能力呢?首先要了解sqlserver是如何訪問數(shù)據(jù)的,如何控制并發(fā)訪問的(事務隔離級別,鎖等),如何與底層操作系統(tǒng)進行交互的,還要了解“多線程、進程”等方面的知識。
比較常見的手段,通過降低事務隔離級別(一定程度地犧牲數(shù)據(jù)一致性等),這種“軟手段”通常會起到很好的效果。其次,單臺DB Server達到一定瓶頸后,可以通過“集群”等方式,實現(xiàn)請求的“負載均衡”的,來達到“抗并發(fā)”的目的,效果也是立竿見影的。
性能調(diào)優(yōu)的方法論--迭代
基線
通俗點講,就是用來計算或者比較的標準。通常以當前系統(tǒng)性能為基準,或者以匹配系統(tǒng)性能為基準。指各個組件發(fā)揮到最大。
成本
用來升級,更換等提升組件性能時的時間,金錢,勞力等等。
基線的定義,以用戶期望值為基礎,可能會涉及以下因素
以往的經(jīng)驗,應用程序的基準,業(yè)界的標準,以前版本的情況
基線的表示方式,包括:每秒完成的批處理(作業(yè)),每秒傳輸量,每秒數(shù)據(jù)量,磁盤掃描時間等等
分析影響性能的因素:
數(shù)據(jù)庫設計(是否復合范式,是否合理歸檔、分區(qū)、分表等)
軟件系統(tǒng) (操作系統(tǒng)優(yōu)化,數(shù)據(jù)庫系統(tǒng)的配置,資源的規(guī)劃和監(jiān)控等)
硬件基礎架構(gòu) (設備規(guī)格,硬件性能,負載均衡,容災等)
Sql語句的寫法、索引和統(tǒng)計信息,事務和鎖,應用程序訪問代碼(連接過多、頻繁開關等)
性能調(diào)優(yōu)的順序:
從左往右,從技術難度、成本、實效去考慮
DETECT 方法
發(fā)現(xiàn)問題、探究原因、提供可能的解決方法、執(zhí)行最有可能的解決方案、確認是否成功解決(如果沒有,重復前面的步驟)、完成其余的工作
DETECT方法論中的這些工作細分起來,會有很多,這里暫時不做過多描述。具體調(diào)優(yōu)的步驟、性能調(diào)優(yōu)工具的使用,下篇文章繼續(xù)。
標簽:營口 預約服務 湘潭 寧夏 河源 欽州 鄂爾多斯 周口
巨人網(wǎng)絡通訊聲明:本文標題《sqlserver性能調(diào)優(yōu)經(jīng)驗總結(jié)》,本文關鍵詞 sqlserver,性能,調(diào)優(yōu),經(jīng)驗總結(jié),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。