SQL Server大型服务器:伸缩性、可用性与易管理性

来源:互联网 发布:知乎专栏怎么写文章 编辑:程序博客网 时间:2024/04/30 19:23

简介

随着电子商务、在线商务应用、商务智能等领域的迅猛发展,许多成功的企业都在对其在线应用进行扩展。目前,每一个Internet或企业内部网络用户都是一个潜在的客户,因此,应用面临着巨大的用户和事务负载。绝大多数企业都在建立大型服务器,以便管理数以吉计的信息并为数以百万的客户和用户提供支持。在此过程中,数据库系统已成为这些大型服务器的核心。

可伸缩式系统为您提供了一种通过添加更多硬件设备的简单方式来扩展网络、服务器、数据库及应用程序的途径。可伸缩式计算机系统可在无需修改应用程序代码的情况下扩大应用程序客户端数量、数据库规模以及网络吞吐量。扩展后的服务器将与原先的小型系统一样便于通过以用户为单位的方式进行管理。

如图1所示,系统可以通过以下方式进行扩充:

向单一节点添加硬件设备或将其升级为一个大型节点。这种方式称为向上扩展

添加更多节点并将数据及工作负载分布于这些节点当中。这种方式称为向外扩展

Figure 1: Scale up and scale out

图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的版本。

伸缩性指标

增长类型

随着组织机构增添并获得更多数据,他们必须处理不断加大的事务负载并维护更大规模的数据库。每次较大幅度的增长都意味着一次新的伸缩性挑战。

伸缩性涉及几种增长类型:

Figure 2: Scalability challenges

图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对比

数据库硬件设备CPUtpmC美元/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企业版
64位

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
DL760-900-256P

272
(34 x 8)

709,220

14.96美元

10,603,803美元

2001年10月15日

Oracle 9i R2企业版

HP ProLiant DL580-PDC 32P

32
(8 x 4)

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
(8 x 4)

137,261

18.46美元

2,533,095美元

2002年9月6日

SQL Server 2000企业版**

HP Proliant
DL760-G2 8P

8
(1 x 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在性价比方面也一概稍逊一筹。

Figure 3: Throughput vs. CPUs

图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企业版
64位

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
14.96美元/tpmC

SQL Server

TPC-W

21,139 WIPS @ 10,000
32.62美元/WIPS

SQL Server

TPC-H

27,094 QphH @ 3 TB
240美元/QphH

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),并将为未来几年内的群集式体系结构奠定基础。

Figure 4: Declining cost of disk storage over time

图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企业版
64位

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大型服务器群集中的每个节点一般通过常规组件和网络互连技术进行构建。通常情况,双倍的互连机制用以提供故障冗余。

Figure 5: A six-node, 48-CPU cluster

图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系统相同的伸缩性限制。

Figure 6: Shared Disk and Shared Nothing Clusters

图6:共享磁盘式群集与不共享资源式群集

相比之下,不共享资源式群集则是一种由数据库系统所组成的联盟。不共享资源式群集中的每个节点都是一台配备自主资源及操作系统的独立计算机。每个节点拥有自己的内存和磁盘存储空间;节点之间通过在共享网络连接上交换消息的方式进行通信。每个节点都是一个服务和可用性单元。每个节点拥有某些磁盘、磁带、网络连接、数据库分区及其它相关资源,并针对这些资源提供服务。当某个节点出现故障时,该节点所拥有的磁盘可能将通过故障转移方式切换到其它邻近节点上,但在任意时刻内,每块磁盘将仅由一个节点进行管理。不共享资源式群集很容易通过常规组件进行搭建。

SQL Server 2000群集

SQL Server 2000支持具备分布式分区视图和分布式事务的不共享资源式群集模型。数据表可以根据主键取值划分到互不相交的成员表中,每个成员表存储在群集中的一个节点上。定义在每个节点上的分布式分区视图将所有成员表统一为一个位置透明的视图。应用程序可以通过这一个视图以一个虚拟表的方式来访问由成员表构成的联合。

Figure 7: Price/performance vs. performance

图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支持建立的最大事务处理数据库规模已无实际限制。

Figure 8: SQL Server performance gains since 1995

图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操作系统中内建了对象请求代理程序和分布式事务管理器。

Figure 9: Typical SQL Server client/server environment

图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),同时,针对原有数据存储机制(如VSAM和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。

Figure 10: SQL Server cluster configuration

图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实现了超凡的可伸缩能力。这种性能在未来的版本中还将更上一层楼。

原创粉丝点击