SQL Server大型服務器:伸縮性、可用性與易管理性
Microsoft研究院,Jim Gray
SQL Server開發團隊,Richard Waymire
摘要 Microsoft SQL Server已經發展爲能夠支持巨型數據庫和應用程序,其中包括可供數百萬人使用的數吉字節數據庫。SQL Server通過在對稱多處理器(SMP)系統上支持向上擴展(允許用戶添加處理器、內存、磁盤、網絡帶寬等資源以建立單一大型節點)或向外擴展爲多節點羣集(允許巨型數據庫在服務器羣集中進行分區,每臺服務器存儲整套數據庫的一部分並完成部分工作,同時確保數據庫對外以一個整體的形式提供訪問)的方式實現這種伸縮能力。通過向外擴展,SQL Server 2000在事務處理委員會基準測試C(TPC-C)中創造了以往任何平臺上的任何數據庫系統均未達到過的頂級性能指標。
.NET服務器與SQL Server羣集提供了高度可用性和自動管理機制。SQL Server通過內建的故障轉移與複製技術來支持高可用性。同時,SQL Server還提供了基於用戶接口、嚮導程序、重複性任務作業調度以及面向腳本化應用操作的SQL-DMO的強大管理模型。SQL Server的體系結構適合模塊化增長、自動化配置、維護以及大型服務器區的編程實現。
本頁內容
簡介 | |
SQL Server 2000與Windows Server 2003:SMP和羣集式大型服務器 | |
SQL Server 2000:伸縮性,可用性與易管理性 | |
伸縮性指標 | |
可伸縮硬件設備體系結構 | |
SQL Server軟件伸縮性體系結構 | |
SQL Server與Windows Server 2003易管理性 | |
小結 | |
版權所有 |
簡介
隨着電子商務、在線商務應用、商務智能等領域的迅猛發展,許多成功的企業都在對其在線應用進行擴展。目前,每一個Internet或企業內部網絡用戶都是一個潛在的客戶,因此,應用面臨着巨大的用戶和事務負載。絕大多數企業都在建立大型服務器,以便管理數以吉計的信息併爲數以百萬的客戶和用戶提供支持。在此過程中,數據庫系統已成爲這些大型服務器的核心。
可伸縮式系統爲您提供了一種通過添加更多硬件設備的簡單方式來擴展網絡、服務器、數據庫及應用程序的途徑。可伸縮式計算機系統可在無需修改應用程序代碼的情況下擴大應用程序客戶端數量、數據庫規模以及網絡吞吐量。擴展後的服務器將與原先的小型系統一樣便於通過以用戶爲單位的方式進行管理。
如圖1所示,系統可以通過以下方式進行擴充:
• |
向單一節點添加硬件設備或將其升級爲一個大型節點。這種方式稱爲向上擴展。 |
• |
添加更多節點並將數據及工作負載分佈於這些節點當中。這種方式稱爲向外擴展。 圖1:向上擴展與向外擴展 |
可伸縮式系統允許設計人員從小規模開始並根據需要不斷對系統進行擴充。某些應用——例如客戶關係管理——需要採用小型節點,甚至是僅能存儲部分數據庫並執行部分應用的便攜式計算機。理想情況下,這種分佈式系統的所有節點都將提供相同的操作並呈現相同的編程接口。
迄今爲止,絕大多數伸縮能力都是通過對稱多處理器(SMP)式向上擴展來實現的,即向單臺服務器上添加更多的處理器、內存、磁盤和網卡。多家廠商的產品已經證明,在常規商務負載環境下,SMP服務器能夠提供10倍於單處理器系統的向上擴展能力。然而,單節點體系結構最終會達到一個瓶頸並無法實現進一步的有效擴展。這種瓶頸表現爲逐漸縮小的回報率或者價格驚人的昂貴硬件設備。
爲實現超過10倍的擴展,應用設計人員傾向於採用羣集式向外擴展體系結構,此種情況下,工作負載和數據庫將被劃分在SMP節點陣列當中。向外擴展式系統通過向羣集中添加更多節點的方式實現擴展。儘管羣集實際上是一個節點陣列,但其卻可以向單套系統那樣進行編程和管理。理想情況下,這種劃分對於客戶端和應用程序來說是完全透明的。所有真正的大型系統都是通過向外擴展式羣集來創建的,其中包括IBM的MVS Geoplex和SP2、HP的VMScluster和NonStop Himalya、以及NCR的teradata系統等。此外,羣集還以存儲區域網絡的形式出現,提供此類產品的廠商包括EMC、HP、IBM等。
與不斷增長的大型SMP系統不同,羣集可以通過便捷的組件方式進行小規模擴充,同時,羣集節點的相對獨立性也形成了天然的故障轉移和高可用性設計方案。儘管如此,由於存在更多的組件需要管理,羣集方式也帶來了一定的管理挑戰。
SQL Server 2000與Windows Server 2003:SMP和羣集式大型服務器
Microsoft Windows Server 2003和SQL Server 2000均支持SMP式向上擴展體系結構和羣集式向外擴展體系結構。SQL Server既可向下收縮至在便攜式計算機或WindowsCE上運行,也可向上擴展爲在巨型服務器上運行。無論在事務處理還是數據倉庫應用領域,SQL Server均可實現卓越不凡的峯值性能。
儘管大多數常見SMP硬件系統採用2路、4路和8路設計,然而,SQL Server 2000和Windows Server 2003缺可在多達64個節點的SMP硬件系統上運行。這些系統在32位Intel體系結構上最大可支持64 GB內存,在64位Itanium體系結構上最大可支持4 TB內存。迄今爲止,由Windows Server 2003系統上運行的SQL Server 2000所支持的最大配置方案已達到32顆處理器和512 GB內存。無論是在官方基準測試或真實應用環境中,這些系統都已顯示出了優越的SMP伸縮性。目前,單顆CPU可支持14,000個用戶對容量爲1 TB的數據庫進行訪問,一套8處理器節點可支持超過92,000個併發用戶對在8 TB磁盤陣列上管理數以億計條記錄的SQL Server系統進行訪問,一套32路CPU節點可以支持290,000個用戶訪問宿主於24 TB磁盤陣列上SQL Server數據庫。這些服務器中的最大者每天能夠處理超過1億筆商業交易。
SQL Server SMP節點羣集所具備的功能更加豐富。在一項基準測試過程中,HP演示了一套由配備8路Xeon處理器的服務器構成的32節點羣集,該羣集能夠支持超過575,000個併發用戶,一套容量爲53 TB的數據庫能夠以每個tmpC單位不超過15美元的低廉成本實現高達709,220個事務處理委員會基準測試C(TPC-C)事務的每分鐘事務處理量。基於這項TPC-C性能指標,SQL Server 2000已成爲當今世界上具備最佳峯值性能與最佳性價比的數據庫系統。
此外,SQL Server在決策支持與數據挖掘領域的表現同樣非常優異,並在廣泛應用的TPC-H查詢集合上表現了突出的性能指標和性價比。
TPC-C基準測試結果顯示,SQL Server的性能表現自1995年以來每年超過兩倍的速度增長。同時,其性能價格比也在以類似的速度增長。硬件設備與軟件產品的不斷完善在短期內仍將確保這種趨勢。
SQL Server 2000:伸縮性,可用性與易管理性
SQL Server 2000企業版通過Windows 2000 Server和Windows Server 2003所提供的特性來構建大型服務器。SQL Server使用額外的處理器資源來運行額外的執行線程,並且使用額外的內存資源在內存中存儲數據庫信息。SQL Server關係型引擎支持高速事務處理以及要求苛刻的數據倉庫應用。查詢執行引擎通過並行合併哈希聯接方式及合併聯接方式來利用多處理器與多磁盤系統。查詢處理器已經進行了多項革新,其中包括哈希團隊、聯接覆蓋索引、在哈希聯接中實現的bit-vector過濾以及對羣集中基於取值的分區表視圖進行透明應用訪問。查詢執行程序通過大量主內存(最多可達512 GB),大量異步I/O以及並行內部查詢來實現良好的決策支持查詢SMP性能。優化器採用多項針對星型架構的特殊技術以及豐富的索引數據庫。它將通過應用到基表和索引之前首先進行排序的方式來優化批量更新。查詢處理器使用內建OLE DB,因此,能夠從多種不同數據源中集成數據。利用這些技術,SQL Server能夠在非羣集Intel系統上實現最佳TPC-C性能和最佳SMP伸縮性,並在SMP羣集上實現最佳峯值性能。SQL Server 2000支持對面向報表的應用程序來說非常重要的索引化視圖。同時,SQL Server還包含用以建立並處理多維數據集的強大分析(OLAP)工具。此外,SQL Server還提供了數據挖掘工具以及文本索引與獲取組件。
分佈式事務允許在運行Windows Server 2003、Windows 2000 Server、Windows XP和Windows CE的多臺服務器劃分SQL Server數據庫。同時,分佈式事務還允許SQL Server參與跨越DB2/MVS、UNIX和Windows節點的事務,其中包括來自IBM和Oracle的數據庫產品。Microsoft 分佈式事務處理協調器支持XOpen XA接口,並且能夠自動管理跨越這些節點的事務。Microsoft和HP利用Microsoft 分佈式事務處理協調器共同建立了每天能夠處理一億筆事務的32節點羣集和45節點羣集。這種羣集由32臺運行SQL Server的服務器組成,每臺服務器存儲數據庫的一部分內容。Microsoft COM+負責管理應用程序並在各臺服務器之間協調事務處理。
伸縮性與可用性
SQL Server 2000擁有強大的伸縮性與可靠性,其中包括:
• |
面向熱備份服務器的日誌傳送特性。 |
• |
遍佈於羣集節點中可更新分區視圖。 |
• |
大容量內存支持能力(最高可達16 TB)。 |
• |
SMP支持能力(最高可達64顆處理器)。 |
• |
針對大型Windows Server 2003 Data Center Server羣集的支持能力。 |
• |
針對單臺服務器上多個SQL Server 2000實例的支持能力。 |
• |
通過與Active Directory相互集成實現針對SQL Server服務器的位置透明訪問。 |
• |
數據及數據庫管理操作過程中得以改進的併發特性。 |
• |
用以支持大規模數據倉庫的索引視圖和雪花架構。 |
• |
面向Internet和數據交換操作的內建XML支持能力。 |
• |
用以支持客戶端高速緩存和消息通信應用程序的通知服務。 |
SQL Server利用Microsoft羣集服務來支持對稱式虛擬服務器:每個SQL Server羣集節點在處理正常工作負載的同時,針對其它(最多三個)節點充當熱備份。針對災難恢復,SQL Server支持從一臺服務器上向某臺遠程服務器進行日誌傳送,當主服務器出現災難性故障時,輔助服務器可在幾分鐘內進行恢復並繼續面向客戶提供服務。
SQL Server在輕鬆安裝與管理方面久負盛名:
• |
企業管理器允許操作人員通過嵌入到Windows Server 2003主控制檯中的單一控制檯對多個SQL Server實例進行監控與管理。 |
• |
數據庫在很大程度上具備自主調節能力。隨着內存的不斷增大,SQL Server將擴大內存使用空間,當來自其他應用的內存壓力增大時,SQL Server將隨之釋放部分內存空間。與此相似,SQL Server還將根據實際需要動態擴充或收縮數據庫及日誌空間。 |
• |
系統將計算數據庫統計信息並自動執行其它內部維護任務,從而將數據庫管理員和操作員解放出來,使其能夠有精力關注更高級別的問題。 |
• |
SQL Server提供了大量能夠幫助管理員自動完成標準任務的嚮導程序。這些任務將由一個作業調度程序來定期執行。警報系統將把事件記錄到Windows事件日誌中,並通過電子郵件或傳真方式向操作員發出警告。此外,還可針對每種事件類別調用一個由用戶定義的數據庫存儲過程。 |
• |
SQL Server 2000能夠在單一SMP節點上支持多個實例。一個大型SMP節點可以同時託管分別爲多套數據庫提供服務的服務器。 |
SQL Server能夠支持千兆兆量級的數據庫;現實使用過程中的唯一限制在於備份、恢復和識別此類數據庫所需花費的時間。此外,最近幾年間,SQL Server產品在這一領域中取得了長足的發展:目前,備份與恢復操作可以採用增量方式並且可以重新開始。Computer Associated公司能夠以每小時2.6 TB的速度執行備份並以每小時2.2 TB的速度進行恢復,在此過程中,在線吞吐量僅僅下降了25%。更加不可思議的是,利用Windows Server 2003卷影磁盤技術,SQL Server能夠在短短11分鐘內從磁盤卷影拷貝當中恢復一個容量爲2.5 TB的數據庫。通過進一步改進的存儲與網絡技術,以上這些指標仍在不斷提高。如需獲取更多相關信息,請在Computer Associates公司的Web站點(http://ca.com/)上搜索“TB級備份基準測試”。
SQL Server被設計爲能夠根據負載和硬件設備運行環境的變化情況自動對自身進行監控與調節。其中增加了用以輔助完成數據庫設計,監控系統運行狀況,以圖形化方式顯示系統狀態與查詢計劃,推薦重組方式,以及幫助操作員完成例行管理任務的相關工具。一套先進的內建工作流系統將負責針對大多數數據中心與數據倉庫來編排數據清理、數據轉換和數據裝載過程。最終,一個嚮導程序將檢查系統工作負載,並向您推薦更好的物理設計方案。
羣集允許將SQL Server向外擴展爲任意規模的大型數據庫。Windows Server 2003羣集提供了模塊化擴展方式,從而允許客戶僅僅購買他們所需的產品,並在需求增長時通過爲服務器添加處理、存儲及網絡模塊的方式對系統進行擴展。Microsoft簡化了大型服務器的構建與管理方式,事實上,Microsoft希望在企業級羣集中實現即插即用特性,並針對更廣泛的羣集配置與管理工作實現自動化。分區羣集能夠潛在支持容量爲數百兆兆的數據庫。此類系統的大小應足以適應各種應用,此外,如果當前的市場價格趨勢一直延續下去,那麼,到2005年,這樣的羣集將只需花費數百萬美元便可利用常規組件搭建完成。
以下表格記錄了SQL Server的伸縮性狀態。其中引用的數字並非嚴格限制,而僅僅代表Microsoft對相關工具擴展能力的預期。
截止到2003年3月的SQL Server 2000伸縮特性
技術 | 活動用戶 | 吞吐量t | 數據庫規模 |
SMP、故障轉移、並行查詢、分佈式事務、SQL Server企業管理器 |
400,000 |
每分鐘300,000筆事務、每天250,000,000筆事務 |
40 TB |
SMP羣集、故障轉移、並行查詢、分佈式事務、SQL Server企業管理器 |
700,000 |
每分鐘500,000筆事務 每天1億筆事務 |
60 TB |
數據倉庫與決策支持、星型架構、複雜查詢優化、多維數據集、數據挖掘技術 |
100 |
每小時2,000次查詢 |
3 TB |
在伸縮性的另一端,SQL Server 2000能夠收縮到小型Windows系統上,併爲這些系統提供連接斷開情況下的運行方式,以便支持移動應用。此外,SQL Server還提供了適用於Windows CE的版本。
伸縮性指標
增長類型
隨着組織機構增添並獲得更多數據,他們必須處理不斷加大的事務負載並維護更大規模的數據庫。每次較大幅度的增長都意味着一次新的伸縮性挑戰。
伸縮性涉及幾種增長類型:
圖2:伸縮性挑戰
• |
增加用戶數量與網絡負載。如果用戶數量增加一倍,網絡和數據庫負載同樣也將增大一倍。 |
• |
增大數據庫規模。對於容量通常能夠達到數百吉數據庫,諸如備份、恢復、裝載之類的操作都將成爲瓶頸。 |
• |
增大事務複雜性。應用設計人員正在不斷嚮應用程序中增加更多能夠幫助用戶完成單調乏味任務的智能元素。同時,相關應用程序也在數據挖掘、數據分析等領域得到了日益廣泛的應用。 |
• |
增加應用數量。隨着應用程序的開發變得越發簡便而廉價,企業正在以全新的方式來應用計算機。這些新增應用程序加大了現有數據庫和服務器的負載。 |
• |
增加服務器數量。羣集式和分佈式應用將涉及大量節點。隨着桌面系統和便攜式計算機的性能不斷增強,他們將建立本地數據存儲機制併成爲關鍵數據源的複製品。可伸縮式系統允許從單一位置輕鬆對大量節點進行管理。 |
向上擴展、向外擴展與速度提升
理想的系統性能應呈現線性變化趨勢,也就是說,如果處理器和磁盤數量增加一倍,那麼,系統吞吐量也應增大一倍,或者,請求響應時間應縮短一半。這兩種結果分別稱爲線性向上擴展和線性速度提升。然而,由於要求系統各個方面均具備良好的伸縮能力,因此,線性擴展很少在實踐中應用。
將伸縮能力簡化爲單一指標——例如系統所能支持的處理器數量——似乎非常誘人。然而,許多數據庫應用對I/O性能非常敏感,因此,向一套I/O性能有限的系統中添加CPU將無法達到提高速度的目的。運行在當今常見的4處理器服務器上的Microsoft SQL Server能夠實現與運行在配備10顆處理器的硬件平臺上的其它軟件產品相當的性能。
SQL Server 2000與Windows Server 2003能夠在Intel 32位體系結構上支持64 GB主內存,在Intel Itanium 64位體系結構上支持4 TB主內存。巨大的主內存容量能夠降低I/O通信量併爲SQL Server提供潛在的性能推動力。此外,SQL Server 2000還支持32路SMP系統以及利用這些SMP系統構建的大型羣集。
目前沒有一種得到普遍接受的伸縮性衡量標準。然而,您可以從事務處理性能委員會(TPC)基準測試中得到一些有價值的信息(參見http://www.tpc.org)。TPC是一個非營利性組織,它訂立了有關事務處理和數據庫基準測試的行業標準。該委員會的成員目前包括所有主流數據庫廠商和服務器硬件系統供應商。委員會業已定義一系列基準測試項目,其中包括:TPC-A、TPC-B、TPC-C、TPC-D、TPC-H、TPC-R和TPC-W。
TPC-C是一種用以衡量OLTP系統性能與伸縮能力的行業標準。TPC-C將對包括查詢、更新和隊列式小型批量事務在內的典型數據庫功能進行廣泛測試。其在諸如數據庫透明性與事務獨立性這樣的關鍵領域內製訂了非常嚴格的規範。許多人士將TPC-C視爲現實世界中OLTP系統性能的理想指示器。獨立分析人士對相關基準測試結果進行了全面審覈,同時,TPC也提供了完整的公佈事項報告。這些報告中包含大量有關不同系統使用方式與系統成本的信息。
以下表格中經過審覈的結果證明,SQL Server 2000與Microsoft Windows Server 2003能夠針對最多32顆處理器提供優異的SMP伸縮能力。事實上,其所達到的TPC-C性能與性價比優於Oracle或DB2在其它所有平臺創下的SMP紀錄(或羣集紀錄)。
SMP在TPC-C基準測試平臺*上的性能與性價比(8至64顆CPU)
SQL Server、DB2及Oracle對比
數據庫 | 硬件設備 | CPU | tpmC | 美元/tpmC | 系統成本 | 有效性 |
SQL Server 2000企業版 |
HP Proliant DL760-G2 8P |
8 |
115,025 |
7.69美元 |
884,216美元 |
2003年3月31日 |
Oracle 9i R2企業版 |
IBM eServer pSeries 660 - 6M1 |
8 |
105,025 |
23.45美元5 |
2,462,401美元 |
2001年9月21日 |
DB2/AS400 V4 R5 |
IBM eServer iSeries 400 - 840-2420-1 |
24 |
163,776 |
51.58美元 |
8,448,137美元 |
2000年12月15日 |
Oracle 9i R2企業版 |
IBM eServer pSeries 690 |
32 |
427,761 |
17.75美元 |
7,591,038美元 |
2003年5月31日 |
Oracle 9i R2企業版 |
HP 9000 Superdome |
64 |
423,414 |
15.64美元 |
6,621,072美元 |
2002年8月26日 |
SQL Server 2000企業版 |
NEC Express 5800/1320Xc C/S |
32 |
433,108 |
12.98美元 |
5,619,528美元 |
2003年6月30日 |
* 截止到2003年3月6日來自各數據庫廠商的最佳SMP測試結果。
上述表格顯示了最新SQL Server SMP TPC-C基準測試結果,以及其它數據庫廠商在8路和32路SMP服務器上的最佳對比結果。結果顯示,SQL Server在8路SMP服務器上能夠支持100,000 tpmC並訪問容量爲8 TB的數據庫,SQL Srever擁有最佳8路SMP性能——其性能優於所有運行DB2或Oracle的8路UNIX系統。與此同時,Microsoft解決方案的成本只有其它系統的不到三分之一。在32處理器系統上。SQL Server的性能略高於最佳Oracle測試結果。但就總體而言,SQL Server與DB2或Oracle相比具有更高的峯值性能,並且價格遠遠低於UNIX解決方案。
上述表格顯示了針對單節點SMP的最佳TPC-C測試結果——即向上擴展性能指標。實際上,多數大型服務器是由位於羣集化數據庫服務器前端的Web服務器區構成的。這是一種向外擴展式設計方案,以下表格顯示了這種設計方案的性能指標。
SQL Server、DB2與Oracle羣集在TPC-C基準測試平臺上*的羣集性能與性價比對比(8至64顆CPU) | ||||||
數據庫e |
硬件設備 |
CPU |
tpmC |
美元/tmpC |
系統成本 |
有效性 |
SQL Server 2000企業版 |
HP ProLiant |
272 |
709,220 |
14.96美元 |
10,603,803美元 |
2001年10月15日 |
Oracle 9i R2企業版 |
HP ProLiant DL580-PDC 32P |
32 |
138,362 |
17.38美元 |
2,404,503美元 |
2003年3月5日 |
SQL Server、DB2與Oracle羣集在TPC-C基準測試平臺上*的羣集性能與性價比對比(8至64顆CPU)(續) | ||||||
數據庫 |
硬件設備 |
CPU |
tpmC |
美元/tmpC |
系統成本 |
有效性 |
Oracle 9i R2企業版 |
HP ProLiant DL580-PDC 32P |
32 |
137,261 |
18.46美元 |
2,533,095美元 |
2002年9月6日 |
SQL Server 2000企業版** |
HP Proliant |
8 |
115,025 |
7.69美元 |
884,216美元 |
2003年3月31日 |
* 截止到2003年3月6日的最佳羣集測試結果。
** 這是一條用以作爲參照的非羣集測試結果。
SQL Server長期位於TPC-C基準測試向外擴展類別的領先地位。正如所期望的那樣,這些向外擴展測試結果遠遠優於通過SMP方式實現的向上擴展測試結果。SQL Server 2000在此領域保持着性能領先優勢。同其它數據庫產品相比,SQL Server 2000能夠提供最佳性能和性價比。其性能指標比與其最爲接近的競爭對手高出60%。這裏提供了兩套Oracle測試結果,其中一套面向Windows 2000 Server,另一套面向Linux,這兩套Oracle系統幾乎採用相同硬件設備(儘管兩次基準測試相隔了6個月,從而使Linux在硬件上顯得略具價格優勢)。最佳SQL Server測試結果比最佳Oracle羣集測試結果高出5倍之多;事實上,Oracle的最佳羣集測試結果僅僅相當於單節點8 CPU SQL Server系統的測試結果。同樣,Oracle在性價比方面也一概稍遜一籌。
圖3:吞吐量與CPU對比
總而言之,TPC-C基準測試結果顯示,與其它平臺上的所有數據庫產品相比,SQL Server具有最佳峯值性能與性價比。
在伸縮性方面,SQL Server 2000在由運行Windows2000 Server的HP節點構成的羣集上呈線性變化趨勢。如圖3所示,通過添加8處理器SMP系統組,數以千計的事務得以在羣集上進行處理。羣集從16個SQL Server節點開始,依次增加至24和32個節點。(在此過程中的實際節點數量分別爲17、26和34,額外的節點充當事務處理協調器。)最大規模的系統由272顆CPU組成,爲分佈在3,000多塊磁盤上的58 TB數據庫提供服務。這種最大規模的系統應當足以適用於最爲龐大的電子商務站點,即便仍然無法滿足要求,亦可通過添加更多節點的方式不斷擴大羣集規模。以上這些性能指標已經遠遠超過了其它系統在各種平臺上創先的紀錄。
在由HP DL76-9000服務器構成的羣集上,隨着節點的不斷增加,SQL Server顯示出了趨於線性化向外擴展趨勢(一旦投入了最初用以設計向外擴展方案的資金)。測試數據顯示了從17、26到34個8處理器SMP節點的伸縮性能(總共涉及272顆CPU)。隨着系統的向上擴展,磁盤和網絡帶寬也將隨着處理器和內存的增加而不斷擴充。
TPC-W基準測試負責模擬具有大量複雜事務的Web服務器應用。它所測試的主要對象爲每秒Web交互次數(WIPS)這一性能指標以及每個WIPS單位的成本(美元/WIPS)這一性價比指標。迄今爲止,只有IBM/DB2和SQL Server擁有此項測試結果。下表顯示了目前爲止兩種產品的最佳測試結果。
TPC-W基準測試平臺上的最佳測試結果(100,000個項目)* | ||||
數據庫 |
硬件設備 |
WIPS |
美元/WIPS |
可用性 |
SQL Server 2000企業版 |
Unisys ES 70000 |
10,440 |
106.73美元 |
2001年7月10日 |
IBM DB2 UDB 7.2 |
IBM eServer xSeries 430 |
7,554 |
136.80美元 |
2001年6月8日 |
Oracle |
無相應記錄 |
- |
- |
- |
* 截止到2003年3月6日由各廠商提供的最佳SMP測試結果
爲調節與決策支持和報表生成相關的工作負載,TPC定義了廣泛的相關負載,並將其命名爲TPC-H。TPC BenchmarkH(TPC-H)是一項決策支持基準測試,它定義了一套面向商務應用的特殊查詢和併發數據修改操作。這項基準測試模擬通過複雜查詢對大量數據進行分析的決策支持系統。通過TPC-H所得出的性能指標被稱爲TPC-H每小時組合查詢性能指標(QphH@Size)。SQL Server擁有在100 GB和300 GB兩種類別上的TPC-H測試結果。
下表顯示了300 GB級別上的最佳測試結果。該表格中的數據沒有明顯的優劣之分。然而,SQL Server位於成本最低的解決方案之列,並且在配備16顆處理器的SMP服務器上具有可觀的性能。
SQL Server解決方案與SMP UNIX解決方案在TPC-H基準測試平臺(300 GB)上對比 | ||||||
數據庫 |
硬件設備 |
CPUs |
QphH@300 GB |
美元/QphH @300 GB |
系統成本 |
有效日期 |
Informix XPS 8.31 FD1 |
HP Alpha Server ES40 Model 6/667 |
16 |
2,832 |
1,058美元 |
2,995,034美元 |
2001年2月14日 |
SQL Server 2000企業版 |
Unisys ES7000 Orion 130 |
16 |
4,774 |
219美元 |
1,043,153美元 |
2003年3月31日 |
Oracle 9i R2企業版 |
HP Alpha Server ES45 Model 68/1000 |
16 |
5,976 |
453美元 |
2,706,063美元 |
2002年6月1日 |
IBM DB2 UDB 7.2 |
HP ProLiant DL760 x900-64P |
64 |
12,995 |
199美元 |
2,573,870美元 |
2002年6月20日 |
* 截止到2003年3月6日各廠商的最佳性能指標。
TPC測試結果在包括SAP、PeopleSoft在內多方提供的其他基準測試中得到了驗證。以下表格彙總了這些基準測試項目。從中可以看到,SQL Server在多項重要的終端用戶基準測試中居於首位。
應用基準測試中的最佳測試結果 | ||
基準測試項目 |
世界紀錄 |
保持者 |
TPC-C |
709,220 tpmC |
SQL Server |
TPC-W |
21,139 WIPS @ 10,000 |
SQL Server |
TPC-H |
27,094 QphH @ 3 TB |
Oracle |
SAP R/3 Sales & Distribution |
47,528併發用戶 |
IBM |
SAP R/3 Retail |
3.2億筆銷售數據線項目/小時 |
SQL Server |
Great Plains Software |
2,400併發用戶 |
SQL Server |
Onyx |
57,000併發用戶 |
SQL Server |
Pivotal eRelationship |
20,000併發用戶 |
SQL Server |
CA Brightstor Backup |
2.6 TB/小時 |
SQL Server |
PeopleSoft eBill Pmt |
191,694筆支付/小時 |
SQL Server |
PeopleSoft CRM 8.4 |
25,400併發用戶 |
SQL Server |
PeopleSoft Financials |
15,000併發用戶 |
IBM |
J.D. Edwards OneWorld |
9,000併發用戶 |
Oracle |
最佳性能指標反映了應用的系統伸縮能力。您當然無法事先計算出這些指標,然而,您可以通過查看標準基準測試以及關注相關行業中類似應用的方式對其可伸縮性進行評估。
可伸縮硬件設備體系結構
技術發展趨勢推動建立可伸縮性系統
當今,日用組件構成了速度最快且最具可靠性的計算機、網絡和存儲設備。整個計算機行業都在計算機內部使用相同的RAM芯片家族產品。與面向專用計算機的相同內存相比,面向日用計算機的內存價格要廉價三到十倍。與此同時,微處理器廠商之間的激烈競爭也創造出了速度令人難以置信的處理芯片。事實上,絕大多數功能強大的超級計算機同樣建立在這些芯片之上。傳統的水冷主機系統也在向這些速度更高的技術轉移。
此外,日用工作站和服務器在性能方面也經常超越主機系統。日用市場上這種快速變化的節奏使底端市場的發展水平已經達到了傳統主機系統和微型計算機體系結構在幾年前的安裝基數。
在網絡互連方面,日用計算機的互連同樣得到了長足發展。以太網的傳輸速度已經達到了每秒120兆。交換式以太網能夠通過日常價格在本地網絡中將傳輸速度提高100倍。10千兆位和40千兆位以太網正在逐步興起。交換式以太網、光纖通道以及其它新型互連技術提供了廉價的高速系統區域網絡(SAN),並將爲未來幾年內的羣集式體系結構奠定基礎。
圖4:不斷降低磁盤存儲設備價格
See full-sized image.
至於存儲技術,性能最高且最具可靠性的磁盤當屬3.5英寸SCSI磁盤。其容量以每年兩倍的速度遞增,且平均硬件故障時間達到了50年。今天,74 GB磁盤已成爲主流標準,300 GB磁盤則面向那些大容量應用。預計到2005年,1 TB容量的磁盤將會出現(圖4)。2003年初,1000美元可以購置300 GB的磁盤容量。這大約是20年前的10,000倍。這種低廉的價格揭示了爲何當今主流服務器通常配置容量達若干TB的磁盤系統:這樣的磁盤系統價格大約爲3000美元/TB。上述圖表同時還對2005年的情況進行預期,那時的服務器通常將配置50 TB磁盤存儲空間,大約十年後,容量爲PB級的磁盤將成爲主流。這種磁盤系統將能夠容納非常巨大的數據庫。
針對SMP和羣集的計算機體系結構選擇
處理器、磁盤及網絡的不斷增多帶來了一種體系結構挑戰:哪種硬件體系結構能夠最充分的利用這些常規組件?迄今爲止,沒有一種體系結構從中勝出,然而,已有三種常見體系結構被證明能夠提供伸縮能力並且得到了廣泛的認同:共享內存、共享磁盤和不共享任何資源。共享內存的方式被SMP系統所採用,而共享磁盤和共享內存的方式則同時被羣集所採用。Windows 2000 Server和Windows Server 2003支持所有這些體系結構,並將隨着這些體系結構的發展不斷進行自身完善。
SMP系統
SMP通過向單一共享內存空間中增加更多處理器的方式來擴充服務器。系統的擴展將通過添加內存、磁盤、網絡接口和處理器的方式來實現。SMP是超越單一處理器限制的最常用方式。SMP軟件模型——通常稱爲共享內存模型——運行同一份操作系統拷貝,應用程序進程就像在單處理器系統上那樣運行。SMP系統相對易於編程,它們能夠發揮行業標準軟件產品與硬件設備的優勢。SQL Server 2000能夠很好的在SMP系統上進行伸縮。
目前,在單一SMP節點上,針對一般用途的實用限制包括:
• |
64顆處理器。 |
• |
512 GB主內存。 |
• |
每個節點30 TB受保護存儲空間(被配置爲60套RAID集合和10個邏輯卷的400塊74 GB磁盤驅動器)。 |
• |
400,000個通過IIS Web服務器或某些事物監視器對SQL Server進行訪問的活動客戶端。 |
這些是Microsoft公司所能預見到的最大規模。一般的大型服務器只有這種規模的一半或更小。隨着時間的推移,SQL Server、Windows和硬件技術將不斷向前發展,從而支持更大規模的配置方案。
SMP伸縮性
目前,SMP已成爲最流行的平行硬件體系結構。基於行業標準Intel微處理器的SMP服務器能夠爲數據庫平臺提供超凡的性能與性價比。Intel面向市場所推出的基於Xeon處理器的8路SMP主板已在衆多硬件廠商製造的服務器上得到了應用。最近幾年來,Intel 8x Xeon服務器已成爲客戶端-服務器和電子商務計算領域的主力軍。目前,配備32顆處理器的Xeon系統以及Intel公司的64位Itanium體系結構也已日趨成熟。
最令人印象深刻的SMP性能指標利用了由這些Itanium處理器提供支持的大量主內存。SQL Server在TPC-C聯機事務處理基準測試中實現了近乎線性的SMP伸縮能力。系統吞吐量(每秒處理的事務數量)隨CPU數量的增加而不斷提高。
隨着微處理器速度的不斷提高,SMP系統的構建變得日益昂貴。當系統從1顆處理器向上擴展爲4顆處理器時,價格變化最爲適度。擴展到8顆處理器時相對而言也比較輕鬆。然而,當處理器數量超過32顆時,價格將迅速攀升,而回報卻會不斷減少。
在軟件層次上,多顆處理器對共享資源的並行訪問必須被串行化。這種串行化特徵限制了獨立應用在共享內存式SMP系統中的實際伸縮能力。這些位於操作系統、數據庫系統和應用程序中的軟件瓶頸與硬件設備限制同樣重要。
儘管如此,SMP系統仍是最爲常見的伸縮形式,並仍將在未來的許多年內保持這一地位。Intel公司的Xeon和Itanium處理器造就了性能強大且價格低廉的SMP節點。
SMP的性能提升隨CPU等增加而不斷減小 | ||||||
數據庫 |
硬件設備 |
CPU |
tpmC |
美元/tpmC |
系統成本 |
有效性 |
SQL Server 2000標準版 |
Dell PowerEdge 2650/2.4/1P |
1 |
16,256 |
2.78美元 |
46,502美元 |
2002年9月11日 |
SQL Server 2000企業版 |
HP ProLaint ML530G3 2P |
2 |
26,725 |
3,72美元 |
99,211美元 |
2003年3月31日 |
SQL Server 2000企業版 |
HP ProLiant DL580-G2/2GHz 4P |
4 |
77,905 |
5.32美元 |
413,764美元 |
2002年12月31日 |
SQL Server 7.0企業版 |
HP ProLiant DL760-G2 8P |
8 |
115,025 |
7.69美元 |
884,216美元 |
2003年3月31日 |
SQL Server 2000企業版 |
Unisys ES7000 Orion 230 |
32 |
234,325 |
11.59美元 |
2,715,310美元 |
2003年3月31日 |
SQL Server 2000企業版 |
NEC Express 5800/1320Xc C/S |
32 |
433,108 |
12.98美元 |
5,619,528美元 |
2003年6月30日 |
Oracle 9i企業版 |
IBM eServer pSeries 690 |
32 |
427,760 |
17.75美元 |
7,179,598美元 |
2003年5月31日 |
正如以上表格所顯示的那樣,SQL Server能夠在得到廣泛應用的標準SMP平臺上提供良好的性能。憑藉常規硬件設備,SQL Server能夠提供極具成本效益的數據庫支持能力。配備32顆處理器的SQL Server系統與同樣配備32顆處理器的Oracle UNIX系統對比結果顯示,UNIX系統的成本比SQL Server系統高出1.6倍,然而,其性能指標卻僅比SQL Server系統提高了18%。
Windows Server 2003羣集具備向外擴展能力,從而使客戶能夠向業已存在的配置方案中添加處理能力、存儲空間及網絡服務。圖5顯示了一套通過每次添加一個節點的方式從8 CPU單節點發展爲48 CPU、6節點結構的羣集。在這種情況下,SMP大型服務器羣集中的每個節點一般通過常規組件和網絡互連技術進行構建。通常情況,雙倍的互連機制用以提供故障冗餘。
圖5:6節點、48 CPU羣集
羣集體系結構
羣集由一系列對外以單一系統方式運行、鬆散結合且相互獨立的計算機系統構成。羣集節點既可以是單處理器系統,也可以是SMP系統。節點之間可以通過常規網絡或專用超高速通信總線進行連接。羣集中的計算機之間相互協作,從而使客戶端將整個羣集視爲一臺具有超高性能與高度可靠性的獨立服務器。由於羣集固有的模塊化特性,可以通過添加服務器、磁盤或網絡資源的方式以增量形式和低廉的成本對其進行向外擴展。
Microsoft公司確信,羣集是在8處理器以上性能空間內實現可伸縮性的最經濟方式。羣集體系結構能夠通過向外擴展方式實現比獨立SMP節點更爲強大的系統。當系統需求超出常規SMP節點性能空間,或者故障冗餘需求要求配備第二臺故障轉移服務器時,將多個節點構成一個羣集將成爲一種極具誘惑力的候選方案。
SQL Server 2000與Windows羣集在常規市場領域內實現了伸縮特性與故障冗餘能力。Microsoft在Windows 2000 Server和Windows Server 2003操作系統中內置了羣集技術,這項技術能夠與常規服務器和網絡互連機制良好的配合使用,同時,它還能夠對由某些廠商(如HP、Dell、IBM和Unisys)生產的特定硬件加速器加以充分利用。諸如SQL Server、Internet Information Server和Exchange之類的Microsoft BackOffice產品均可利用這種羣集支持能力。此外,許多第三方產品也可在這種體系結構基礎上進行託管。
共享磁盤式羣集與不共享資源式羣集
目前存在兩種基本羣集模型:共享磁盤式羣集和不共享資源式羣集(如圖6所示)。在共享磁盤式羣集中,所有處理器直接訪問所有磁盤(及數據),但它們之間並不共享主內存。一個額外的軟件層次——稱爲分佈式高速緩存或鎖管理器——將用於在所有處理器當中統一管理高速緩存。IBM的DB2/OS390 SysPlex和Oracle Parallel Server是共享磁盤式並行數據庫體系結構的典型示例。由於鎖或高速緩存管理器將針對數據訪問進行序列化,因此,共享磁盤式羣集存在某些與共享內存式SMP系統相同的伸縮性限制。
圖6:共享磁盤式羣集與不共享資源式羣集
相比之下,不共享資源式羣集則是一種由數據庫系統所組成的聯盟。不共享資源式羣集中的每個節點都是一臺配備自主資源及操作系統的獨立計算機。每個節點擁有自己的內存和磁盤存儲空間;節點之間通過在共享網絡連接上交換消息的方式進行通信。每個節點都是一個服務和可用性單元。每個節點擁有某些磁盤、磁帶、網絡連接、數據庫分區及其它相關資源,並針對這些資源提供服務。當某個節點出現故障時,該節點所擁有的磁盤可能將通過故障轉移方式切換到其它鄰近節點上,但在任意時刻內,每塊磁盤將僅由一個節點進行管理。不共享資源式羣集很容易通過常規組件進行搭建。
SQL Server 2000羣集
SQL Server 2000支持具備分佈式分區視圖和分佈式事務的不共享資源式羣集模型。數據表可以根據主鍵取值劃分到互不相交的成員表中,每個成員表存儲在羣集中的一個節點上。定義在每個節點上的分佈式分區視圖將所有成員表統一爲一個位置透明的視圖。應用程序可以通過這一個視圖以一個虛擬表的方式來訪問由成員表構成的聯合。
圖7:性價比與性能對比
See full-sized image.
前面所描述的羣集化SQL Server TPC-C基準測試結果使用包含多達34個節點的不共享資源式羣集中的分佈式分區視圖。測試結果以很大優勢領先於其它數據庫系統的性能指標。實際上,圖7顯示了截止到2002年12月爲止,SQL Server在這一不斷擴展的羣集上所實現的性能指標,以及所有測試結果在100,000 tpmC以上的系統針對這一性能指標(tmpC)的性價比(美元/tmpC)。SQL Server在性能與性價比方面具有明顯的領先優勢。請注意,針對測試結果介於100,000 tpmC至700,000 tpmC之間的系統,SQL Server的性價比大約爲13美元/tpmC。相比之下,UNIX系統不僅價格昂貴,而且吞吐量明顯處於劣勢。
SQL Server性能改進
SQL Server在TPC-C基準測試中的性能改進非常顯著。圖8中的座標圖顯示了SQL Server自1995年年初以來的峯值吞吐率與峯值性價比報告。SQL Server性能從2,455 tpmC增加到709,220 tpmC,7年內提高了290倍。然而,在此期間,其性價比卻從240美元/tpmC下降爲3美元/tpmC,大約降低了90倍。如果按照年度計算,平均每年性能提高125%,價格降低65%。若將這一數字按照取整計算,在過去7年中,SQL Server的性能每年提高一倍,價格每年降低一半。隨着羣集特性在SQL Server 2000中的引入,目前,SQL Server支持建立的最大事務處理數據庫規模已無實際限制。
圖8:自1995年來的SQL Server性能提升
查看完整尺寸圖像。
按照取整方式計算,在1995至2002這七年間,SQL Server平均每年性能提高一倍,價格降低一半。
Windows操作系統平臺上的單一SQL Server實例能夠支持數以千計的用戶對包含數億條記錄的數據庫進行訪問。此類系統能夠支持用戶數量超過250,000的社區或者更大規模的Internnet用戶(此類用戶不定期的與服務器建立連接)社區。這裏提供一組直觀數字,美國最大的銀行擁有10,000名出納員,最大的電話推銷機構擁有不足10,000家活動代理商;由此可見,這些系統足以支持大型企業的傳統前端辦公業務。
出於演示目的,SQL Server團隊建立了一套稱爲TerraServer的大型多媒體數據庫。這套數據庫存儲了容量高達幾TB的衛星地球圖像,其覆蓋範圍超過一千萬平方公里。這些圖像存儲在位於324塊HP StorageWorks磁盤上的三億五千萬條數據庫記錄中。該服務器自1998年6月開始在Internet上開放。迄今爲止,已經處理了來自數百萬訪問者的6億次查詢。
在另一個SQL Server演示項目中,一套包含數億條記錄的銀行數據庫被劃分到20臺運行SQL Server的服務器上,其中每臺服務器作爲一個羣集節點。數據庫的劃分由應用程序來管理。COM+和Microsoft分佈式事務處理協調器用以協調那些涉及兩臺以上服務器的事務。
利用分區視圖,SQL Server 2000證明了超凡的性能:在34節點羣集上以14.96美元/tpmC的性價比實現709,220 tpmC的峯值性能。這一指標比單節點性能高出6倍之多,並且涉及一套容量爲54 TB的數據庫。通過添加更多節點,這套系統的性能還可以得到進一步提高。
這些示例證明了SQL Server可以處理巨大的事務容量(每天數百萬筆)、巨大的用戶社區(數以萬計)以及巨大規模的數據庫(TB級)。同時,這種產品還將以每年2到3倍的速度繼續增長。儘管這種增長在一定程度上是由於硬件設備的性能提升和價格降低造成的,然而,SQL Server自身的迅速發展同樣不可小視。我們相信,在可以預見的未來,硬件設備與軟件產品的改進仍將以這種快速的步伐繼續下去。
SQL Server軟件伸縮性體系結構
SQL Server 2000應用程序體系結構
SQL Server 2000是專爲配合.NET體系結構而設計的。它所提供的工具和支持系統能夠幫助客戶建立活動服務器頁面和COM+對象,從而實現商務邏輯並訪問由SQL Server進行管理的數據。
每個Windows節點通常利用同一個SQL Server地址空間來管理節點上的所有SQL數據庫。SQL Server以具備多個線程池的主地址空間方式運行。某些線程專門用於完成諸如日誌記錄、緩衝池管理、操作請求服務和系統監控之類的後勤管理任務。此外,更大規模的線程池負責支持用戶請求。這些線程將執行客戶端所請求的存儲過程或SQL語句。
通常情況下,SQL Server應用於客戶端/服務器運行環境中,位於其它計算機上的客戶端程序與服務器建立連接,發起SQL請求或直接運行通常利用Transact-SQL語言編寫的存儲過程(如圖9所示)。客戶端程序也可能同樣位於服務器節點上。SQL Server利用內建事務處理(TP)監控程序機制——開放數據服務——來支持大量客戶端。在實際應用過程中,這種配置方案最多能夠支持5,000個併發客戶端。當超過這一規模後,可以考慮將應用程序劃分到羣集的不同節點上,或者使用Web服務器和TP監控程序在客戶端與SQL服務器之間建立連接。諸如CICS、Tuxedo和Top End這樣的常用TP監控程序已被移植到Windows上並且提供了SQL Server接口。目前,越來越多的應用程序開始採用Internet信息服務(IIS)和活動服務器頁面(ASP)來實現展現機制。這些ASP頁面採用Microsoft Visual Basic Scripting Edition或JavaScript方式來調用通過活動數據對象(ADO)接口對SQL Server進行訪問的商務邏輯COM對象。Windows操作系統中內建了對象請求代理程序和分佈式事務管理器。
圖9:典型SQL Server客戶端/服務器運行環境
查看完整尺寸圖像。
羣集透明性
羣集透明性允許應用程序像訪問本地數據那樣訪問位於羣集中各個節點上的數據和對象,數據可以在不影響應用程序運行方式的情況下從一個分區移植到另一個分區上。由於能夠在不修改應用程序的情況下向系統中添加節點並在這些節點間移植數據,透明性已成爲模塊化擴展方式的關鍵要素。對於高可用性而言,透明性同樣是一項關鍵要素,它允許在節點出現故障時利用故障轉移機制將數據從一個節點移植到另一個節點上。
分佈式系統技術
分佈式系統技術是在羣集中實現透明性的關鍵要素。通過將應用程序和系統構造爲以遠程過程調用方式進行交互的模塊,應用程序的模塊化水平得以提高,並且可以分佈到羣集中的不同節點上。客戶端通過名稱方式對服務進行調用。過程調用既可調用本地服務,也可通過遠程過程調用方式調用遠程服務。
Microsoft在將其軟件產品構造爲通過遠程過程調用方式進行交互的組件方面投入了鉅額資金。通過這種方式實現的基礎架構分別稱爲OLE(對象鏈接與嵌入)、COM(組件對象模型)、DCOM(分佈式COM)、Microsoft ActiveX(以Internet爲中心的COM擴展)和最新的COM+。COM+的許多特性目前已投入使用,其它更多特性也即將發佈。具體而言,在Windows和SQL Server 2000中,Microsoft提供了以下特性:
• |
COM+是Windows Server的核心部分之一。它能夠通過安全、高效的方式調用任意對象,這樣一來,一個程序便可調用在網絡中任意位置上運行的其它程序。COM+將事務管理器的特性與對象請求代理和TP監控程序的特性有機結合在一起。它已成爲Microsoft分佈式對象機制的核心。 |
• |
分佈式事務允許應用程序在許多SQL Server數據庫分區及其它資源管理器上完成工作,並通過透明方式自動獲取ACID分佈式事務語義。 |
• |
OLE DB允許SQL Server及其它數據集成程序訪問來自任意數據源的數據。OLE DB接口可以針對幾乎所有數據源建立。絕大多數Microsoft數據存儲組件擁有OLE DB接口(例如Exchange Server、Active Directory、Word和Excel),同時,針對原有荽媧⒒疲ㄈ鏥SAM和RMS)的OLE DB接口也將迅速涌現。 |
• |
數據庫管理對象(DMO)是所有SQL Server管理接口的COM具體化。利用DMO,客戶和ISV可以建立用以對運行SQL Server的本地及遠程計算機進行管理的工具。 |
• |
Windows還提供了一種可靠的隊列機制——消息隊列,它允許應用程序發起延遲調用請求。這種隊列機制同樣適用於斷開的節點,允許這些節點提交在其恢復網絡連接後進行處理的工作。 |
• |
SQL Server 2000現在還包含一套通知服務,它提供了一種在數據庫狀態發生改變時通知客戶端的健壯、可伸縮方式。這種通知服務可用於管理股票價格、交付日程以及其它需要在數據庫狀態發生變化時及時採取措施的情況。 |
Windows目前已經支持這些特性以及許多其它羣集機制,其中包括羣集安全性(域)、羣及軟件管理(系統管理服務器)、羣集命名(分佈式名稱服務與Active Directory)和羣集性能監控(系統監控器)。SQL Server通過內建於企業管理器中的管理工具對這些機制進行補充,這些管理工具使企業管理器得以對運行SQL Server的服務器陣列實施管理與監控。
Windows和SQL Server的一項關鍵目標在於確保羣集能夠像獨立大型系統那樣易於管理和使用。Windows和SQL Server簡化了在羣集中的衆多節點之間管理與平衡應用服務器的機制。Windows羣集面向所有組件提供了通用的控制檯以及簡單的管理模型。羣集的另一項增值收益在於,故障冗餘特性屏蔽了許多系統故障並且提供了具有高度可用性的服務。
分佈式分區視圖
SQL Server允許用戶將一個數據表劃分到多個成員表中,並在這套成員表的基礎上創建一個分區視圖。這樣的視圖被稱爲分佈式分區視圖。每個成員表可以存儲在不同的羣集節點上。如果視圖定義被複制到所有羣集節點,那麼,應用程序便可以像本地存儲的表那樣通過任意節點訪問整張數據表。
分佈式分區視圖將依照以下方式創建。首先,數據表將根據主健字段的前綴進行劃分。經過劃分得到子表被稱爲成員表,除通過一個應用在分區屬性上的附加完整性約束條件來限制分區字段的取值範圍外(例如,customer_ID在1000000到2000000之間),所有子表均與原始數據表具有相同的架構。一個聯合視圖將在結合所有子表的基礎上創建。之後,管理員應在羣集的每個成員上執行以下操作步驟:
1. |
管理員定義成員表並利用屬於該成員表的數據對其進行填充。 |
2. |
管理員定義指向聯合中所有其它成員的鏈接,以便使SQL Server 2000能夠在其分佈式查詢處理過程中訪問其它節點。 |
3. |
管理員以成員表的聯合方式定義分佈式分區視圖。 |
此後,應用將能夠像所有數據均位於本地那樣高效的訪問分佈式分區視圖和底層成員表。SQL Server 2000查詢優化器和Microsoft分佈式事務處理協調器(MS DTC)將確保程序高效執行並獲得ACID屬性。
分區數據與數據管道
SQL Server一直允許客戶在運行於多個節點上的不同SQL Server實例間劃分數據庫和應用程序。客戶端與位於某臺服務器上的應用建立連接。如果客戶端發出的請求需要訪問另一個節點上數據,那麼,應用程序將通過Transact-SQL語句訪問這些數據,或對位於其它節點上的SQL Server實例發起遠程過程調用。
舉例來說,分佈式應用的每個倉庫中可能存儲了所有本地訂單、發貨單和庫存清單。當某筆訂單被延期或一批新的貨物從工廠運達時,本地系統必須執行同時涉及倉庫和工廠節點的事務。這種情況下,在倉庫中某臺服務器上運行的應用程序需要直接訪問工廠數據,或者調用一個位於工廠服務器上的存儲過程。MS DTC和SQL Server將自動管理工廠與倉庫之間的數據完整性。
一旦將數據和應用劃分到羣集中的多臺服務器上,還需要通過一種便捷、高性能的方式在這些服務器間移植數據。通過將由遠程過程調用返回的結果集直接捕獲到節點本地數據表中,數據管道大大簡化了服務器間的數據傳送方式。這種機制適用於許多應用程序,並且可以用來替代分佈式查詢。
分佈式事務
分佈式事務是Windows Server中一個不可或缺的組成部分,同時,它也是朝着全面Windows Server羣集機制邁出的又一大步。爲創建一個分佈式事務,應用程序需要聲明BEGIN DISTRIBUTED TRANSACTION,此後,MS DTC將自動對事務進行管理。
MS DTC還將與SQL Server進行連接以打開事務標準X/Open XA。客戶端可以連接諸如CICS、Encina或Tuxedo這樣的TP監控程序,並通過這些監控程序將請求發送至相應服務器。利用TP監控程序將事務發送至相應服務器是實現分佈式應用的另一種途徑。同時,TP監控程序還允許SQL Server參與到跨越多個節點的事務中來。
此外,Windows Server 2003還包含Microsoft COM+,一種嵌入式事務監控程序。COM+能夠將客戶端請求分派到不同應用服務器上。
所有這些方式都使得在羣集中的服務器間劃分數據與應用變得相對輕鬆和簡單。
透明分區與並行數據庫技術
到目前爲止,本文描述的所有特性均已存在,您隨時可以購買並使用它們。事實上,許多客戶正在服務器上安裝SQL Server,通過向上擴展方式將其擴充爲8路SMP硬件系統,繼而通過向外擴展方式對其數據庫和應用程序進行分區。通常情況下,這些分區被安置在靠近各自實際用戶的位置上:數據資料被安置在零售市場,有關近期活動的數據中心被安置在會計部門,數據倉庫被安置在規劃與市場部門。所有這些應用均保持相對獨立並按照自然方式進行劃分。此外,不同部門之間的數據流同樣得到了妥善定義。與Microsoft Visual Basic腳本相結合的圖形界面和操作接口將用以在運行SQL Server的計算機上自動完成許多操作。
在過去幾年中,Microsoft一直希望爲運行SQL Server的計算機添加透明數據分區機制,以便在不必刻意調整應用程序的情況下實現數據分區。
在實現分區透明性後,SQL Server團隊又希望實現並行查詢分解。也就是說,將通常由決策支持應用程序發起的大規模數據查詢分解爲能夠分別在分區數據庫的多個節點獨立執行的一系列組件。
數據分區示例:TPC-C與每天1億筆事務
SQL Server中的分佈式分區視圖使得前面部分中所討論的接近其它DBMS峯值性能兩倍之多的超高TPC-C性能成爲可能。這種設計方案最出色的部分在於能夠通過向羣集中添加更多節點和更多加盟SQL Server的方式管理兩倍的數據並處理更多的事務。
Microsoft、Intel和Compaq三家公司聯合建立了一套在經典三層式DCOM+ SQL Server 7.0應用中運行DebitCredit業務的大型系統(140顆CPU、45個節點、4 TB內存)。二十個前端節點用於模擬以每秒14,000筆的速度提交事務的160,000個連接用戶。二十臺服務器節點分別在各自的SQL Server實例中存儲相同比例的數據庫子集。這套系統並不使用分佈式分區視圖,因此,應用必須自行管理數據分區。客戶端節點負責模擬網絡負載,並生成針對客戶端上相關對象的DCOM調用,進而觸發針對服務器的ODBC調用。所有服務器總共存儲16億條賬目記錄,並預留出能夠容納30億條歷史記錄的空間。這些服務器在本地執行85%的事務,在遠程執行15%的事務。MS DTC負責協調分佈式事務。五個節點專門用於實現這項功能。
這套系統已在Microsoft Executive Briefing Center持續運行了一年時間,並且每天處理大約11億筆事務,5倍於旅遊行業的事務處理量,10倍於每天內發生的所有信用卡事務,1000倍於最大規模證券交易所的事務處理量。現在,我們將在SQL Server 2000上通過分佈式分區視圖的方式實現這項應用。
利用Microsoft羣集服務實現的高可用性數據庫
SQL Server企業版通過在第一臺服務器發生故障或需要停機維護時將其負載以故障轉移形式切換至另一臺服務器的方式來提供故障冗餘和高度可用性。故障轉移機制按照以下方式工作。兩臺Windows Server 2003服務器被配置爲一個羣集。這兩臺服務器能夠支持兩個SQL Server實例。每臺服務器管理一個應用數據庫分區。到此爲止,我們所採用的均爲標準SQL Server技術。
藉助SQL Server企業版,每臺服務器均將變爲在底層節點因故障或系統維護導致脫機時仍可繼續提供服務的虛擬服務器。爲實現這一特性,SQL Server數據庫將被存放在兩臺服務器均可訪問的共享SCSI磁盤上。如果一臺服務器出現故障,另一臺服務器將接管磁盤所有權並在倖存的節點上重啓故障服務器。重啓後的服務器將恢復數據庫並開始接受客戶端連接。另一方面,當主服務器發生故障時,客戶端將重新連接虛擬服務器。作爲一項Windows 2000 Server特性,Microsoft羣集服務允許虛擬服務器名稱和IP地址在不同節點之間進行遷移,以便使客戶端察覺不到服務器的轉移。Microsoft羣集服務包含於Windows 2000 Server、Windows Server 2003企業版以及Windows Server 2003 Datacenter Server中。
SQL Server企業版提供構建虛擬服務器的內建安裝支持。配置完成後,除能夠容忍硬件設備故障外,虛擬服務器將與網絡上的其它服務器別無二致。參見圖10。
圖10:SQL Server羣集配置
SQL Server故障轉移是完全自動的。檢測並從故障中恢復只需花費幾分鐘時間。當故障節點被修復後,它將重新啓動並作爲新的備份服務器。如果需要,該節點也可在修復後重新替代原先的服務器。
面向數據中心和災難恢復的數據複製
數據複製有助於分區應用的配置與管理。許多應用將自然的劃分爲多個互不相關的部分。舉例來說,酒店、零售及倉儲商店系統具有很強的地域性。因此,應用和數據庫可以根據地域分佈拆分爲不同服務器。與此類似,客戶關懷、銷售團隊自動化以及電話推銷應用同樣非常適於劃分。儘管如此,所有這些應用都需要一些全局共享數據。同時,它們還需要通過電子化方式實現定期報告與故障恢復機制。
同樣的機制也可用於允許某個站點針對數據捕獲式OLTP系統充當數據倉庫。進而,數據倉庫將面向許多爲分析人員提供決策支持數據的數據中心提供所需數據。某些應用無需數據倉庫並由運行系統直接將更新內容發佈到數據中心。
同樣的機制也可用於允許某個站點針對數據捕獲式OLTP系統充當數據倉庫。進而,數據倉庫將面向許多爲分析人員提供決策支持數據的數據中心提供所需數據。某些應用無需數據倉庫並由運行系統直接將更新內容發佈到數據中心。
SQL Server擁有一套功能強大且簡單易用的數據複製系統。一套位於企業管理器中的圖形化用戶界面允許管理員指示數據庫發佈更新內容,並設置其它節點訂閱這些內容。這種發佈——分發——訂閱機制支持一對一和一對多的發佈方式。層疊式分發服務器可以將複製機制擴展至大量訂閱服務器。複製是以事務爲單位進行的,因此,每臺訂閱服務器都將看到一個位於一致性時間點上的數據庫。
SQL Server應用程序通常每小時發佈幾十兆更新內容。發佈可採用即時、定期或按需方式。整個複製過程將全部自動完成並且非常易於管理。
SQL Server與Windows Server 2003易管理性
由於Microsoft通過圖形化工具與嚮導提供了易於安裝的操作系統和數據庫,因此,利用SQL Server構建巨型系統相對比較輕鬆。SQL Server同時還提供了用以建立操作過程的嚮導程序。
這些巨型系統涉及數以千計的客戶端系統和大型數據庫;因此,易管理性是一項嚴峻的挑戰。以多數磁盤驅動器3 MB/秒的數據傳輸率裝載、轉儲並識別容量爲100 GB數據庫在一臺磁帶機通常需要花費10多個小時。定義並管理10,000個不同用戶的安全屬性同樣是一項艱鉅的任務。此外,針對10,000套客戶端配置並管理硬件設備和軟件產品也是一項非常耗時的工作。
Microsoft充分認識到易管理性是實現伸縮性的最大障礙。因此,Microsoft在產品文檔中描述了針對這些問題的解決方案。這部分將概要介紹Windows Server 2003和SQL Server 2000的管理機制。
可伸縮式Windows Server 2003管理機制
管理數以千計客戶端的軟硬件配置或許是維護大型客戶端/服務器系統所面臨的最具挑戰性工作。Windows Server 2003和Microsoft系統管理服務器將自動完成大量此類任務。
首先,Windows安全特性爲Windows操作系統上運行的每種應用提供了域的概念和單一登錄機制。Windows安全特性提供了用戶組。您可以通過爲用戶組提供授權並將用戶添加到組中的方式對大量用戶進行管理。Windows 2000 Server安全機制通過分佈網絡節點上的一系列安全服務器(域控制器)來實現。這種發佈方式同時兼顧了伸縮性與可用性。單個域可以擴展到超過40,000個用戶。通過藉助域間信任關係構建多域體系結構,Windows安全特性還可進一步擴展。安全系統同時提供了編程接口和直觀的圖形化界面,從而使節點能夠輕鬆的對網絡安全性實施管理。
其次,Microsoft系統管理服務器允許單一管理員對數以萬計客戶端的軟件配置、許可授權和升級情況進行管理。系統管理服務器能夠自動完成大量任務,並將異常情況最小化爲只有技術專家才能解決的問題。此外,Windows DHCP協議將根據需要自動爲節點分配IP地址,從而避免了時間消耗以及可能出現錯誤的任務,這種方式實現了節點靈活性並且保留了地址池。
此外,Windows Server 2003還提供了用以記錄錯誤日誌、管理磁盤空間、設置優先級別和監控系統性能的內建工具。所有這些工具可以對由客戶端和服務器節點構成的羣集進行管理。前面的示例顯示了位於某個節點上的系統監控器能夠對多個節點上的CPU和網絡利用情況進行跟蹤。每個Windows節點擁有500多個面向內部行爲的性能計數器。SQL Server、Microsoft Exchange以及其他許多宿主於Windows操作系統的產品均集成了系統監控器。SQL Server添加了75個性能計數器並且集成了用以通告事件的Windows事件日誌。
可伸縮性SQL Server管理機制
SQL Server企業管理器是數據庫服務器管理領域的一項突破。它爲管理員提供了一種從單一控制檯管理並操作多套SQL系統的可視化方式。SQL Server企業管理器的關鍵特性包括:
• |
用以控制並監控多套服務器以及相關客戶端運行狀況的圖形化管理界面。 |
• |
定期執行諸如轉儲、改組及完整性檢查之類管理任務的作業調度程序。 |
• |
允許管理員設置自動異常處理並通過編寫Visual Basic腳本或由嚮導程序生成腳本的方式自動完成相關任務的數據管理對象機制。這些存儲過程使用電子郵件和基於Telephony API(TAPI)的尋呼機系統來報告執行結果或通知相關操作人員。 |
• |
允許第三方添加新增管理工具的擴展機制。 |
• |
用以配置並管理數據庫複製的全套圖形化界面 |
• |
與Active Directory實現集成,Active Directory將通過位置透明的方式按照名稱對服務器和數據庫進行註冊。 |
SQL Server企業管理器同時包含用以設置例行操作的嚮導程序。它提供了一種用以建立自動備份、重組和運行任務的嚮導程序;一種用以例行從數據庫向Internet和企業內部網絡發佈Web頁面的嚮導程序;以及一種幫助設置數據庫複製的嚮導程序。用以對大型數據庫進行裝載、備份、恢復、檢查和重組的實用工具是運行巨型數據庫系統的關鍵所在。利用單臺高性能磁盤驅動器對容量高達數TB的數據庫進行備份將花費數小時乃至數天時間。通過並行使用多套磁盤及磁帶,SQL Server和Windows 2000 Server實現了TB級傳輸速率:利用26%的額外CPU負載實現2.6 TB/小時的在線備份;利用12%的額外CPU負載實現2.2 TB/小時的在線恢復。此外。從磁盤上執行的備份與恢復操作的速度將會更快。
SQL Server企業管理器作業調度程序利用常規磁帶自動控制設備來編排備份/恢復過程。備份操作既可全速進行,也可在後臺以慢速方式完成。通過實現增量備份並提高並行級別,巨型數據庫可在幾小時內完成備份。利用Windows Server 2003的卷影複製技術,容量高達TB級的數據庫可在幾分鐘內完成備份與恢復操作。
小結
Windows Server 2003和SQL Server可以在單臺SMP服務器上向上擴展爲巨型數據庫,或向外擴展爲多臺分別執行部分應用程序並存儲部分數據庫的服務器。SQL Server企業管理器簡化了這些服務器的配置與管理方式。同時,OLE事務、數據複製以及數據管道等特性簡化了這些服務器之間的數據與請求轉移方式。
目前,單個SQL Server實例可支持超過250,000個通過IIS或ADO/ODBC方式與單一服務器建立連接的活動用戶。這些服務器能夠在每天8小時內處理數百萬筆業務。它們支持由散佈在數百塊磁盤上、總量高達TB級的上億條記錄所構成的數據庫。
由32臺此類服務器所構成的Windows Server 2003羣集每分鐘能夠在容量超過50 TB的數據庫內處理700,000多筆商業事務——每天處理超過一億筆事務。通過採用羣集機制,SQL Server 2000系統的規模與吞吐量將不受任何限制。
自動故障轉移、COM+、.NET XML Web服務以及配備大容量主內存的Itanium處理器的出現是朝着能夠同時向上和向外進行擴展的SQL Server Windows Server 2003羣集所邁出的最新步伐。
SQL Server能夠憑藉無可比擬的性價比和易用性來執行這些任務。SQL Server 2000在標準TPC-C基準測試項目上保持着最佳性能。此外,SQL Server、Windows Server 2003以及底層硬件設備的性能在最近三年來以每年兩倍的速度遞增。Microsoft希望這種趨勢能夠在未來幾年內繼續保持下去。
今天,SQL Server實現了超凡的可伸縮能力。這種性能在未來的版本中還將更上一層樓。
如需瞭解更多關於SQL Server的信息,請查看http://www.microsoft.com/sql/default.asp或訪問Microsoft Network上的SQL Server論壇(搜索關鍵字:MSSQL)。
版權所有
本文檔所提供的信息資料僅代表Microsoft公司在信息發佈當日就所討論問題持有的臨時觀點。鑑於Microsoft公司必須針對瞬息萬變的市場狀況不斷做出相應調整,故而,本文檔內容不應被解釋爲Microsoft方面所做出的任何承諾;與此同時,Microsoft也無法在發佈之日後繼續保證文件所含信息的準確性。
這份白皮書僅供用於信息參考目的。Microsoft並未在本文檔中提供任何形式的保證、明示或暗示。
遵守所有適用版權法律是文檔使用者所應承擔的義務。Microsoft公司雖未在版權保護下就與本文檔相關的權利做出任何限定,但是,任何人未經Microsoft公司書面授權許可,均不得出於任何目的、以任何形式、利用任何手段(電子、機械、影印、錄音等)將本文檔的任何組成部分製作成拷貝、存儲或引入檢索系統、亦或向任何對象進行傳送。
Microsoft公司可能就本文檔所涉及的主題擁有專利、專利申請、商標、版權或其它形式的知識產權。除非已同Microsoft公司簽訂書面許可協議,並根據協議條款獲得明確授權,任何出示本文檔的行爲均無法使您具備針對上述專利、商標、版權或其它知識產權加以利用的許可權限。
© 2003年,Microsoft公司。版權所有,保留所有權利。
Microsoft、ActiveX、BackOffice、.NET、Visual Basic、Windows和Windows NT均系Microsoft公司在美國和/或其它國家所擁有的註冊商標或商標。
本文檔所涉及的其它公司和產品的真實名稱均爲其各自所有者持有的商標。