使用SQL Server 2008進行優化性能
現今的公司需要易訪問且可用性好的商業數據,以便他們可以在全球市場中獲得一席之地。與易訪問數據的這個需求相呼應,關系數據庫和分析數據庫在規模方面繼續發展,內嵌數據庫和許多產品一起出現,并且許多公司將服務器合并來減輕管理工作。當公司的數據環境在規模和復雜度方面持續發展的同時,他們必須維護***的性能。
本文描述了SQL Server 2008的性能和擴展能力,并解釋了你可以怎樣使用這些功能來實現:
◆使用可用于數據庫引擎、分析服務、報表服務和集成服務的工具和功能來優化任何規模的數據庫性能。
◆擴展你的服務器來充分利用新的硬件能力。
◆擴展你的數據庫環境來優化響應速度并使你的數據更易于用戶訪問。
使用SQL Server 2008優化性能
由于公司數據在規模和復雜度方面繼續發展,你必須采取行動來提供***的數據訪問時間。SQL Server 2008包括許多特性和增強的功能來優化所有方面的性能,包括關系型聯機事務處理(OLTP)數據庫;聯機分析處理(OLAP)數據庫;報表;數據抽取、轉換和加載(ETL)處理。
關系型數據庫的性能
在大多數商業環境中,關系型數據庫是業務關鍵應用程序和服務的核心所在。隨著數據量的增長,以及依賴于關系數據存儲的用戶和應用程序數目的增長,公司必須能夠確保他們的數據系統具有一致的性能和響應。SQL Server 2008提供了一個強大的數據庫引擎,它支持大型關系數據庫和復雜的查詢處理。
可測量的實際性能
SQL Server 2008建立在之前SQL Server 版本的行業領先的性能之上,給你的公司提供了***級的標準數據庫性能。使用事務處理性能委員會的TPC-C基準示范了SQL Server 的高性能,Microsoft是***個發布更新的TCP-E基準結果的數據庫銷售商,這更精確地表現了現在公司里普遍存在的OLTP工作負載的種類。
此外,SQL Server 通過一個創記錄的3GB的TPC-H結果顯示了它對大范圍的數據倉庫工作量的執行能力,這表明了SQL Server 2008基礎的擴展能力和性能。
高性能的查詢處理引擎
SQL Server 的高性能查詢處理引擎幫助用戶將他們的應用程序性能提高到***。這個查詢處理引擎評估查詢,并產生基于動態維護的、關于索引和密鑰選擇及數據量統計的***查詢執行計劃。你可以在SQL Server 2008中鎖定查詢計劃以確保普通查詢執行時的穩定性能。查詢處理引擎還可以利用多核或多處理器系統,并生成能夠利用并行性進一步提高性能的執行計劃。
一般情況下,在查詢性能方面***的瓶頸是磁盤I/O。SQL Server的動態緩存能力降低了對物理磁盤的訪問次數,并且查詢處理引擎使用預讀取掃描來預測一個給定的計劃所需的數據頁面,并預先將它們讀取到緩存里,這可以顯著地提高整個性能。另外,SQL Server 2008支持本地數據壓縮,從而可以降低必須讀取的數據頁面的數量,并提高了I/O 工作負載的性能。
SQL Server 2008支持表和索引的分割,這使得管理員可以將同一個表或索引分配到單獨的物理存儲設備上,從而通過多個文件組來控制數據的物理存放位置。在SQL Server 2008中針對查詢處理引擎的優化使得它可以并行地訪問分區數據,并顯著提高了性能。
性能優化工具
SQL Server 2008包含SQL Server Profiler 和Database Engine Tuning Advisor。通過使用SQL Server Profiler,你可以捕捉應用程序典型負載中所發生的事件,然后在Database Engine Tuning Advisor 中將這些事件重現,從而針對數據的索引和分區生成相應建議,這樣你就可以優化應用程序的性能了。
在創建了最適合你的應用程序的工作負載的索引和分區之后,你可以使用SQL Server Agent來制定一個自動的數據庫維護計劃。這個自動的維護會定期的重新組織或重建索引,并更新索引和選擇統計,以確保當數據插入和修改你的數據庫的物理數據頁面片段時一直提供***的性能。
Resource Governor
通常,一個單獨的服務器用來提供多個數據服務。在一些情況下,許多應用程序和工作負載依賴于同一個數據源。在目前所流行的服務器合并的趨勢下,要為一個給定的工作負載提供可預測的性能是很困難的,因為同臺服務器上的其它工作負載會競爭系統資源。在一個單獨的服務器上有多個工作負載,管理員必須避免出現某些問題,例如使其它工作負載一直等待系統資源的失效查詢,或者低優先級的工作負載反過來影響高優先級的工作負載。SQL Server 2008提供了Resource Governor,它使得管理員可以對運行在一個SQL Server實例上的各個工作負載定義和分配優先級。工作負載基于如用戶、應用程序和數據庫等因素,通過對資源定義限制,管理員可以將失效查詢的可能性降至***,還可以限制獨占資源的工作負載。通過設置優先級,管理員可以優化一個關鍵任務的處理性能,同時維護服務器上其它工作負載的可預測性。
性能套件
SQL Server 2008提供了性能套件,它是一套用來收集、分析、排除故障和存儲SQL Server 2008診斷信息的集成框架。性能套件為性能監控提供了一個端對端的解決方案,其中包括針對性能數據的低開銷收集、集中化存儲、以及分析報表。你可以使用SQL Server 2008管理套件來管理收集工作,例如可以使用數據收集器、啟動一個收集集合并查看作為性能狀態面板的系統收集集合報表。你還可以使用系統存儲結構和性能套件應用程序編程接口(API)來建立你自己的基于性能套件的性能管理工具。
性能套件提供了一個統一的數據收集基礎架構,它在每一個你想監控的SQL Server實例中都有一個數據收集器。這個數據收集器非常靈活,它可以管理數據收集范圍以適應開發、測試和生產環境。你使用這個數據收集框架就可以輕松地收集性能數據和一般的診斷數據。
該數據收集器基礎設施推出了以下新的概念和定義:
◆數據提供商。性能或診斷信息的來源可以包括SQL Trace 、性能計數器和Transact-SQL查詢(例如,從分布式的管理視圖中獲得數據)。
◆收集器類型。一個邏輯封裝,它提供了從數據提供商處收集數據的機制。
◆收集項目。一個收集器類型的實例。當創建一個收集項目時為這個項目定義輸入屬性和收集頻率。一個收集項目不能單獨存在。
◆收集集合。數據收集的基本單位。一個收集集合是一組收集項目的集合,它們在一個SQL Server 實例上定義和部署。收集集合可以各自獨立運行。
◆收集模式。一個收集集合中數據收集和存儲的方式。這個收集模式可以設置為緩存或不緩存。收集模式將影響用于該收集集合的工作和時間表的類型。
◆數據收集器是可擴展的,它可以添加新的數據提供者。
當配置數據收集器時,會創建一個默認名稱為MDW的關系數據庫作為管理數據倉庫,其中將存儲收集來的數據。這個數據庫可以和數據收集器放在同一個系統上,或者放在一個單獨的服務器上。管理數據倉庫中的對象包括以下三種預配置的模式,其作用各不相同:
◆Core 模式 - 包括用于組織和標識收集到的數據的表和存儲過程。
◆Snapshot 模式 - 包括數據表、視圖和其它對象,用于支持標準的收集器類型的數據。
◆Custom_Snapshot 模式 - 可以創建新的數據表來支持用戶定義的、按標準的、以及擴展的收集器類型所創建的收集集合。
性能套件提供了一組強大的預先配置的系統收集集合,包括Server Activity、 Query Statistics 和Disk Usage,來幫助你快速分析所收集的數據。通常使用◆Server Activity 系統收集集合來開始監控和故障排除。在SQL Server管理套件中發布了一組與每一個系統收集集合相關的報表,你可以將這些報表作為性能狀態面板來幫助你分析數據庫系統的性能,如圖1所示。
數據倉庫和分析性能
數據倉庫環境必須能夠滿足數量不斷發展的數據和用戶需求,并維護***的性能。隨著數據倉庫查詢變得越來越復雜,查詢的每一部分都必須進行優化以維護可以接受的性能。在SQL Server 2008中,查詢優化器可以動態地導入一個***的位圖過濾器來加強星型模式(star schema)的查詢性能。此外,SQL Server 2008支持數據分割、高級索引功能和索引視圖來支持更大型的數據存儲,還有稀疏列和有效的數據類型,例如VARDECIMAL,對于包含大量 NULL 值的大型表,它可以降低相關開銷(數據倉庫的一個普通特性)。
分析服務應用程序需要大型且復雜的計算。寶貴的處理器時間浪費在計算解決 NULL 或零數據的聚合上。在SQL Server 2008分析服務中的塊計算使用默認的值,將要計算的表達式的數目降至***,并將單元導航限制為整個空間只有一次,而不是每個單元一次,從而顯著提高了計算性能。
盡管多維度OLAP(MOLAP)分區提供了更好的查詢性能,但是需要用到回寫功能的公司之前都需要使用關系型OLAP (ROLAP)分區來維護回寫表。SQL Server 2008增加了對MOLAP分區執行回寫操作的能力,這消除了由維護ROLAP回寫表所引起的性能下降的問題。
報表服務性能
SQL Server 2008報表服務引擎被重新開發,以便通過按需處理過程對報表服務添加更好的性能和可擴展性。報表不再局限于內存,因為現在報表處理使用一個文件系統緩存來緩解內存的壓力。報表處理還可以適應其它消耗內存的處理。
一個新的渲染架構解決了之前的渲染器版本中存在的內存利用問題。這些新的渲染器還提供了一些改進,例如對CSV渲染器添加了一個真實數據渲染器,并支持在Excel渲染器中內置數據塊和內置子報表。
集成服務性能
ETL處理常常用來在企業數據庫源中添加業務數據和更新數據倉庫中的數據。過去,許多公司只需要將歷史數據和不常使用的數據恢復到數據倉庫中。現在,許多公司想要從數據倉庫中獲得接近于實時的數據。隨著數據量的增加和要求數據倉庫刷新頻率的增加,ETL處理時間和靈活性就變得更加重要了。
數據刷新要求SQL Server集成服務使用查找來比較源記錄和數據倉庫中的數據。集成服務實現了顯著改進的查找性能,它降低了包運行時間并優化了ETL操作。傳統ETL處理的另一個問題是確定源數據庫中的什么數據被修改了。管理員不得不非常謹慎地避免重復已有的數據。一些管理員選擇刪除所有的數據值重新加載數據倉庫,而不是管理已被修改的數據,這使得ETL 處理的開銷更大。SQL Server 2008具有變更數據捕獲(Change Data Capture, CDC) 功能來記錄對變更表的更新,當數據刷新按計劃進行時,可以實現對數據變更的跟蹤并確保數據倉庫的一致性。
【編輯推薦】