1. 程式人生 > >使用SQL Server 2008進行優化效能

使用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) 功能來記錄對變更表的更新,當資料重新整理按計劃進行時,可以實現對資料變更的跟蹤並確保資料倉庫的一致性。