現今的公司需要易訪問的和可用性好的商業數據,以便他們可以在全球市場中獲得一席之地。與易訪問數據的這個需求相呼應的,關系數據庫和分析數據庫在規模方面繼續發展,內嵌數據庫和許多產品一起出現,並且許多公司將服務器合並來減輕管理工作。當公司的數據環境在規模和復雜度方面持續發展的同時他們必須維護最佳的性能。
這篇白皮書描述了SQL Server 2008的性能和擴展能力,並解釋了你可以怎樣使用這些功能來:
· 使用可用於數據庫引擎、分析服務、報表服務和集成服務的工具和功能來優化任何規模的數據庫的性能。
· 擴展你的服務器來充分利用新的硬件功能。
· 擴展你的數據庫環境來優化響應和使你的數據更易於用戶訪問。
2.使用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,你可以捕捉發生在你的應用程序的一個典型工作負載中的事件的軌跡,然後在數據庫引擎調整顧問中重演這個軌跡,它會生成對你的索引和數據的分割的建議,這樣你就可以優化你的應用程序的性能了。
在創建了最適合你的應用程序的工作負載的索引和分區之後,你可以使用SQL Server Agent來制定一個自動的數據庫維護計劃。這個自動的維護會定期的重新組織或重建索引,並更新索引和選擇統計,以確保當數據插入和修改你的數據庫的物理數據頁面片段時一直提供最佳的性能。
資源控制器
通常,一個單獨的服務器用來提供多個數據服務。在一些情況下,許多應用程序和工作負載依賴於同一個數據源。在目前所繼續的服務器合並的趨勢下,要為一個給定的工作負載提供可預測的性能是很困難的,因為同台服務器上的其它工作負載會競爭系統資源。在一個單獨的服務器上有了多個工作負載,管理員就必須避免出現某些問題,例如使其它工作負載一直等待系統資源的失效的查詢,或者低優先權的工作負載反過來影響高優先權的工作負載。SQL Server 2008包含資源監控器,它使得管理員可以對運行在一個SQL Server實例上的各個工作負載定義和分配優先權。工作負載是基於如用戶、應用程序和數據庫等的因素。通過對資源定義限制,管理員可以將失效查詢的可能性降低到最小,管理員還可以限制獨占資源的工作負載可用的資源。通過設置優先權,管理員可以優化一個關鍵任務處理的性能,同時維護服務器上其它工作負載的可預測性。
性能套件
SQL Server 2008提供了性能套件,它是一個你可以用來收集、分析、排除故障和存儲SQL Server 2008診斷信息的集成框架。性能套件為性能監控提供了一個端對端的解決方案,它包括花費較低的收集、統一的存儲和性能數據的分析報表。你可以使用SQL Server 2008管理套件來管理收集工作,例如可以使用數據收集器、開始一個收集集合和查看作為性能狀態面板的系統收集集合報表。你還可以使用系統存儲結構和性能套件應用程序編程接口(API)來建立你自己的基於性能套件的性能管理工具。
性能套件提供了一個統一的數據收集基礎設施,它在每一個你想監控的SQL Server實例中有一個數據收集器。這個數據收集器非常靈活,它提供了管理數據收集范圍的能力以適應開發、測試和生產環境。你使用這個數據收集框架就可以輕松地收集性能和一般的診斷數據。
這個數據收集器基礎設施推出了以下新的概念和定義:
· 數據提供商。性能或診斷信息的來源可以包括SQL Trace 、性能計數器和Transact-SQL 查詢(例如,從分布式的管理視圖中獲得數據)。
· 收集器類型。一個邏輯封裝,它提供了從數據提供商處收集數據的機制。
· 收集項目。一個收集器類型的實例。當你創建一個收集項目時,你為這個項目定義輸入屬性和收集頻率。一個收集項目不能單獨存在。
· 收集集合。數據收集的基本單位。一個收集集合是一組收集項目的集合,它們在一個SQL Server 實例上定義和部署。收集集合可以各自獨立地運行。
· 收集模式。一個收集集合中數據收集和存儲的方式。這個收集模式可以設置為緩存或不緩存。收集模式影響用於該收集集合的工作和時間表的類型。
數據收集器是可擴展的,它支持增加新的提供商。
當配置數據收集器時,會創建一個默認名稱為MDW的關系數據庫作為管理數據倉庫,其中存儲收集的數據。這個數據庫可以和數據收集器放在同一個系統上,或者放在一個單獨的服務器上。管理數據倉庫中的對象分為以下三種預配置schema,目的各不相同:
· Core schema 包括用於組織和標識收集到的數據的表和存儲過程。
· Snapshot schema 包括數據表、視圖和其它對象,用於支持標准的收集器類型的數據。
· Custom_Snapshot schema 使得可以創建新的數據表來支持用戶定義的按標准的和擴展的收集器類型創建的收集集合。
性能套件提供了一組強大的預先配置的系統收集集合,包括Server Activity、Query Statistics和Disk Usage,來幫助你快速地分析你收集的數據。你通常使用Server Activity 系統收集集合來開始監控和故障排除。在SQL Server管理套件中發布了一組與每一個系統收集集合相關的報表,你可以將這些報表作為性能狀態面板來幫助你分析你的數據庫系統的性能,如圖1所示。
圖 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)功能來記錄對變更表的更新,當數據刷新按計劃進行時,這幫助跟蹤數據變更和確保數據倉庫的一致性。
3.使用SQL Server 2008向上擴展
服務器合並、大型數據存儲、和復雜的查詢要求物理資源能夠支持很多工作負載運行在一個服務器上。SQL Server 2008具有充分利用最新的硬件技術的能力。多個數據庫引擎實例和多個分析服務實例可以安裝在一個單獨的服務器上,從而合並硬件使用。在一個單獨的服務器上可以安裝最多50個實例,而不必犧牲性能或響應時間。
硬件支持
SQL Server 2008充分利用現代的硬件,包括64位、多核和多處理器系統。為了支持不斷增長的報表、分析和數據訪問負載,SQL Server可以支持最多64GB的內存並支持32位硬件上的動態的AWE映射內存的分配,並且可以支持64位的硬件上的最多8TB的內存。
當許多處理器添加到一個服務器上時,如果處理器必須訪問對於處理器來說不在本地的內存,那麼內存訪問可能會慢下來。建立非一致性內存訪問(non-uniform memory Access,NUMA)架構的硬件通過使處理器訪問本地內存解決了這些內存訪問限制。SQL Server可識別NUMA硬件,所以提供給公司更好的可擴展性和更多的性能選項。你可以利用基於NUMA的計算機而不必修改應用程序配置。SQL Server 2008支持硬件NUMA和軟件NUMA。
熱添加硬件
盡管你可以通過增加內存或CPU來輕松地擴展一個SQL Server 實例,計劃停機時間來添加硬件以擴展你的關鍵任務應用程序和24/7操作可能是比較困難的。有了SQL Server 2008,你就可以添加CPU和內存到兼容的機器上來擴展你的服務器而不必停止你的數據庫服務。
下面的要求必須滿足才能熱添加內存:
· SQL Server 2008企業版
· Windows Server® 2003企業版或Windows Server 2003 Datacenter版
· 64位SQL Server或具有AWE 支持的32位SQL Server
· 從你的硬件供應商那裡獲得的支持內存添加的硬件,或虛擬軟件
· 使用–h 選項啟動的SQL Server
下面的要求必須滿足才能熱添加CPU:
· SQL Server 2008企業版
· 用於Itanium 系統的Windows Server® 2008企業版或用於x64位系統的Windows Server 2008 Datacenter版
· 64位SQL Server
· 支持CPU添加的硬件,或者是虛擬軟件
高級並發特性
擴展你的數據庫服務器的目的是支持用戶或應用程序數目的增長。隨著用戶數目的增長,當多個事務試圖訪問同一個數據時響應時間可能受到並發問題的影響。SQL Server 2008提供了許多隔離級別來支持均衡並發和讀取完整性的眾多解決方案。對於低級別的版本支持,SQL Server 2008具有一個只讀的隔離級,它使用READ_COMMITTED_SNAPSHOT 數據庫選項,還有一個使用ALLOW_SNAPSHOT_ISOLATION數據庫選項的快照隔離級。此外,在表上的鎖升級設置使得你可以改進性能和維護並發,特別是在查詢分區表的時候。
4.使用SQL Server 2008向外擴展
除了擴展單個的服務器以支持不斷發展的數據環境,SQL Server 2008還提供了工具和功能來擴展數據庫以增加巨型數據庫的性能和縮短數據和用戶的距離。
可擴展的共享數據庫
數據倉庫是由多個只讀數據的消費者使用,例如分析和報表解決方案,並且可以超載數據請求,這降低了響應時間。為了克服這個問題,SQL Server 2008支持可擴展的共享數據庫,它提供了一個擴展多個數據庫服務器實例中的只讀報表數據庫的方法,以分配查詢引擎工作負載和隔離資源密集的查詢。這個可擴展的共享數據庫特性使得管理員可以通過在多個報表服務器上布置一個只讀數據庫的拷貝從而創建一個只用於只讀的數據源。應用程序訪問一個一致的數據拷貝,獨立於它們所連接的報表服務器。
數據選擇路由
當一個公司決定要擴展它的數據庫結構到一個聯合的數據庫中時,它必須決定怎樣在服務器間從邏輯上劃分數據和怎樣路由請求到適當的服務器上。有了SQL Server 2008,你可以使用Service Broker將數據選擇路由作為一個服務來執行,路由請求到適當的位置。
對等復制
對等復制可以提供一個有效的向外擴展的解決方案,其中一個數據庫的相同拷貝會分發到企業中的各個位置,以便對數據的本地拷貝的修改會自動的發布到其它的復制拷貝所在地。SQL Server 2008使用新的對等拓撲向導和可視化的設計器幫助你降低執行和管理一個對等復制解決方案所需的時間。SQL Server的之前的版本需要管理員在附加一個新的節點到已有的節點上的時候停止所有節點上發布的表的活動,而SQL Server 2008使得新的節點甚至可以在復制活動過程中添加和連接。
查詢通知
大多數企業應用程序是基於三層架構的,其中數據從數據庫服務器上通過一個或多個應用程序服務器(通常是一個Web群)獲得,它反過來被客戶端計算機訪問。為了提高性能,許多應用程序服務器緩存數據以提供更快的響應速度給用戶。緩存數據的一個局限是需要刷新數據,因為如果數據沒有經常刷新,那麼用戶可能獲得了不再准確的陳舊數據。過多的刷新數據會導致增加花費,這可能最終會降低應用程序服務器的性能。SQL Server 2008使用查詢通知在緩存數據過期時自動地通知中間層應用程序,從而幫助應用程序更有效地使用應用程序緩存。這個應用程序服務器可以訂閱查詢通知以便在數據庫中執行了影響緩存數據的更新時會獲得通知。應用程序服務器然後可以動態地使用這個更新的數據來刷新緩存。
向外擴展分析服務
盡管SQL Server 2005分析服務器立方體通常是只讀的數據庫,但是每一個實例只維護它自己的數據目錄。盡管你可以通過在多個服務器上同步立方體從而創建一個分析服務數據庫的多個拷貝,但是立方體同步過程導致了許多業務環境中不能接受的延遲情況。SQL Server 2008分析服務通過支持一個擴展分析服務的部署克服了這些問題,在這個部署中分析服務數據庫的一個單獨的、統一的、只讀的拷貝在多個實例間共享,並通過一個單獨的虛擬IP地址來訪問,如圖2所示。
圖 2: 向外擴展分析服務
5.總結
SQL Server 2008為你的所有數據需求提供了一個豐富而強大的環境。它通過它的高級關系數據庫引擎、分析服務、報表服務和集成服務提供了最好的性能。新的結構良好的工具和技術一起幫助公司部署任意規模的數據環境,並維護最佳的性能。SQL Server 2008支持最新的技術趨勢,為公司提供了靈活擴展單獨的服務器和合並工作負載到這些服務器上的能力。它還給公司提供了擴展大型數據庫所必需的技術。