QUOTE:
感谢
SQL Server小组对于在与此白皮书相关的测试中提供存储设备的Network Appliance表示万分感谢。特别对在Raleigh, NC的数据库性能工程小组在测试过程中所提供的专业以及强有力的支持,以及在编写本文的过程中给予的协助表示感谢。
介绍
Microsoft® SQL Server常被用来为在大量的关键性业务的数据库处理过程提供支持,其中包括在线事务处理(OLTP)以及决策支持系统(DSS) 等工作。查询结果集的返回速度是和以下几个相关的关键要素密不可分的:
• 数据库—包括对数据库的查询的方式(比如DSS 或者OLTP),数据库的大小与复杂程度,以及进行的处理的类型(比如连接或者聚集)
• 硬件—通常是CPU的个数与主频速度,偶尔是磁盘的个数
• 软件—用来执行查询的应用程序算法的效率
在本白皮书中,我们关注于在DSS环境中的性能测试。DSS的工作负荷不象OLTP,是极消耗资源的,请查看表1以获得更多信息。正如带有复杂查询(要么是专用的要么是编写的在线分析处理过程)的长事务所显现的那样,DSS查询将会涉及到大量的数据(常常数以T计);因此上DSS查询可能潜在的会占用系统中所有的CPU和磁盘带宽资源。
表1 DSS (与 OLTP相比)的特点
SQL Server 2005 数据库引擎改进
在新的Microsoft SQL Server中数据库引擎已经作出了较大的修改,以提高在DSS环境中的绝对性能以及多处理器扩展能力,而无需管理员进行手工的系统调试。以下是对这些改进细节的汇总。
内存管理
内存管理是服务器工作过程的重要部份。在这一方面的改进全面提高了服务器的性能,特别是在DSS环境中。在SQL Server的内存管理中正是由于以下几个主要改进的贡献,才最终提高了在DSS工作中对于复杂,运行时间长,以及耗资源的查询的内存支持
• 统一内存管理 在SQL Server 操作系统层中的统一内存管理架构为SQL Server中不同的部件提供了一个通用的内存代理,它不仅优化了性能而且使系统在各种形式的内存压力下可以进行灵活的操作。这个架构的一个特殊的部份,统一动态缓存,改进了内部缓存的behavior/locality,同时提高了在广泛的操作环境中的性能
• NUMA 支持 SQL Server 2005使用了非统一内存访问(NUMA) 体系结构,这使得它可以更好的利用内存的局域性从而提供巨大的灵活性
• 动态内存管理 SQL Server 2005支持对常规,被锁定的,大分页的内存的动态管理。SQL Server的新版本也支持了内存的热添加技术,从而减少了重启的需要
• 内存跟踪 主要的增强在于内存跟踪,包括对部件间的内部内存分配的跟踪,还有外部操作系统级别的内存事件的跟踪。这一技术为SQL Server 2005提供了更有效的支持性特性
查询处理
SQL Server 2005在对于决策支持应用程序的查询处理能力方面也提供了重要的改进。SQL Server的查询处理器包括了执行环境,查询优化器以及查询执行器
• 执行环境 执行环境控制着查询编译以及缓存规划过程,执行环境中的一项主要改进是一个新的计划稳定性功能。这一功能允许在运行时让查询提示附加在查询上。这一技术对于从独立软件供应商(ISVs)那里购买了决策支持应用程序的用户对程序的调试是很有用的。
• 查询优化器 它负责找到执行一个查询的最佳计划,SQL Server 2005中的优化器为在DSS环境中的应用进行了重大的改进。这些改进包括:
• 为分区表提供的全面优化功能,其中包括分区消除功能,它可以避免读取能够显示但不包括查询结果集数据的分区
• 当在其中一个日期-时间列上有一个范围筛选器时,一个新的数据关联优化功能可以在拥有关联日期-时间列的表之间进行联表查询时大幅加速。
• 优化器的统计子系统提供了改进的统计加载能力,它可以在恰当的时间加载正确的统计信息,因而改进了开销评估并提供了更好的查询计划。一个新的字符串汇总统计功能允许对使用带有任意位置通配符样式(比如字符串'%john%smith%')的LIKE条件应选择的数据进行精确估算。传统的柱状图统计的精确率也有所改进
• 优化器所提供的另外一个计划稳定功能称为计划强制,它让用户可以强制优化器为一个查询选定一个特定的计划。它有助于解决在升级到了一个新的服务包或版本后在大工作负荷环境中少数查询速度变慢的问题
• 查询执行器 它负责运行由优化器产生的查询计划来执行一个查询,SQL Server 2005的执行器在很多方面都有所改进,包括:
•
• 对分区表的全面支持
• 为支持T-SQL 语言扩展而新加的查询执行运算符
• 改进的哈希联接性能
• 改进的嵌套循环性能
• 改进的位图联接优化
对于决策支持应用程序而言,SQL Server 2005所提供的查询处理能力在业已十分强大的SQL Server 2000决策支持功能之上又有了长足的进步。
QUOTE:
测试环境
下面的部份详细描述了在SQL Server性能测试对比中使用的服务器和存储配置。测试部署的示意图,见图表1
服务器
所有的测试系统运行的都是提供64位功能的Microsoft Windows Server™ 2003数据中心版。进行的两组数据库性能对比如下:第一组是在SQL Server 2000 和 SQL Server 2005 Beta 2之间进行的,而另一组则是在都运行SQL Server 2005的4路和8路服务器之间进行。要全面了解详细配置,请看表2
表2. 服务器配置

QUOTE:
存储
存储对于SQL Server性能的影响是非常关键的,在正式测试之前应当检查并消除可能由于服务器存储空间不足而出现的潜在性能瓶颈。当服务器只有有限的CPU和内存资源时(从某种意义上说,它们总是有限的),存储子系统被设计成在一种不会对I/O需求和可扩展能力形成潜在瓶颈的方式下运行是非常重要的。
测试配置
Network Appliance FAS920光纤互联存储系统为我们在实验环境配置中提供了直接附加的存储设备。无论配置的是4路或是8路服务器,Network Appliance的存储解决方案都有很强的扩展能力,当存储的需求上升时,其模块化设计和集成的管理GUI可以用来快速而简单的添加存储设备。
所有的存储系统都运行Data ONTAP version 6.5.2。每个存储系统都配有56 x 72GB 15K RPM磁盘;其中35个spindle被配置主持四个LUN来存储数据,三个spindle配置作为RAID系统的奇偶盘进行数据保护(更详细配置见图表2和附录)。应注意的是存储系统会自动的跨所有在卷中的磁盘来分布数据而无须操作者的干预。
为了在SQL Server 2000 和 SQL Server 2005上进行的测试运行的需要,在4处理器系统上创建了总计12*400GB的 LUN,每个包含2个SQL Server数据库文件。对于8处理器系统创建了总计24*400GB的LUN,每个包含2个SQL Server数据库文件。详细配置见表3
Network Appliance 增值
Network Appliance的高度可扩展的存储子系统为需要关键业务高度可用的数据库体系结构提供了管理简单,高性能价格比,以及可靠的存储解决方案。Network Appliance的存储解决方案在现今的整体安装方案中可以为我们带来超过99.997%的可用性。另外,Network Appliance的解决方案改进了对存储资源的使用,并提供了优越的数据保护和快速应用测试技术。
Network Appliance的存储解决方案也同时提供了高级备份和恢复功能,这对于保证SQL的高度可用也是非常关键的。SnapManager 大大减少了SQL Server 的备份时间——从小时到秒——并且每次的备份都是完全备份。其备份是基于NetApp的快照拷贝技术,它允许同时对多个任意大小的数据库进行备份而且对于每个额外的完全备份只需要最小限度的磁盘空间。SnapManager使得组织得以在几分钟之内——而不是几天或几个小时以后——将出现问题的SQL Server进行恢复,这就让它成为了可用的最快速的备份和恢复解决方案之一并为SQL Server的环境提供了综合了可用性,可扩展性以及可靠性的业界领先的技术。
表3 存储配置
性能
Network Appliance存储系统提供了对存储设备的高性能低延时的访问,从而满足了我们证明SQL Server 2005能力的需要。在进行每个大表扫描时这些系统提供了将近250M每秒的I/O速率。
相对于为产生的工作负荷所提供支持正常所需的,为存储子系统配置了更多的spindles
为了确保在性能方面获得的优势仅是由SQL Server的改进所产生的,在所有的测试中都使用了默认的存储阵列配置。其中唯一的例外是在连续读取的过程中禁用了pre-fetch, 由于SQL Server 2000 和 SQL Server 2005都已经产生了足够深度的pre-fetch,因此启用了全部的系统性能。
QUOTE:
数据库设计
测试数据库完全的标准化了并且基于主关键字和外关键字添加了索引。数据库的大小,包括了所有的表和索引一共是560 G
DSS 测试查询
大量的典型决策支持查询都是在系统扩展了之后才重读系统并对发生的变化进行评估的。这些查询的复杂程度都有着显著的区别,因为要访问大面积的有效数据,所以在使用的访问方式和查询参数上有着很大的不同。所有的此类查询都可以从有效的内存管理中获益。而当它们运行时都是作为单独的作业发出请求的。
利润增长 (PE).这个查询提供了总计的利润增长数据,包含了在一个指定的时间段内已经售出的产品的未付的确定的折扣值。这个查询可以有助于确定未来应当提供的产品折扣。
主要特点:
• I/O 强度大
• 需要大强度的索引扫描
最佳性价比供应商 (CE).这个查询按照价格的由低到高列出了购买某个指定部件的供应商的详细信息。这个查询识别出了提供某个指定部件价格最低的供应商,从而有助于在商业运作中在某个给定的地区寻找合适的供应商
主要特点:
• 复杂查询
• 查询计划和优化起关键作用
最有价值消费者 (HV).此查询列出了基于订单的历史数据的 ‘N’个最有价值消费者。HV查询根据订单的数量将消费者进行了分级,因而有助于识别对于公司最有价值的消费者。
主要特点:
• 大量的任意读取
• 高强度的嵌套循环联接需求
指定产品利润 (SP).这个查询提供了按地理区域排列的某个指定产品按年的利润总计。SP查询可以帮助一个公司确认在某个地区哪个产品是利润贡献最大的。
主要特点:
• 复杂查询
• 查询计划和优化起关键作用
价格汇总 (PS).此查询展现了在一个指定的时间段内所有产品的销售价格和总销售量。选择的时间段可以让将近95%的表被扫描到。此查询可以计算出在指定的时间段中的总销售额
主要特点:
• 浮点计算
• 表达式评估性能起关键作用
未运货订单汇总(UO).这个查询被用来提供对未在指定时间内运货而又能为企业带来高额收入的指定数量订单的汇总信息。举个例子,如果N=20,查询必须返回收入最高的前20个订单(除非SQL语句所限定的合格行少于20,此时将会返回所有合格的行),这个查询有助于在确保企业收入目标的前提下确定不同货物的运货优先级
主要特点:
• 任意读取
• 嵌套循环及哈希联接起关键作用
迟到订单汇总 (LR). 这个查询列出了所有在承诺交货日期前就已运出,但未按时到货的产品的汇总信息。此查询通过运货的不同方式列出了迟到的订单,可以有助于企业选择最佳的运货方式并确保在未来能够按时交货
主要特点:
• 任意读取
• 嵌套循环及哈希联接起关键作用
测试结果
下面的图表汇总了在SQL Server 2000 和 SQL Server 2005上进行的决策系统测试的结果。
SQL Server 2000 和 SQL Server 2005 性能对比
对于每个查询,测试都首先使用一个4路处理器IA-64的平台在SQL Server 2000环境下进行,然后再在使用同样物理配置的SQL Server 2005环境下进行。
执行时间比较
图表3显示了最有价值消费者(高强度联接),指定产品利润(复杂查询),价格汇总(高强度浮点运算),以及未运货订单(高强度联接 ),和迟到订单(大量任意读取)查询的响应时间。在所有情况下,在SQL Server 2005中运行的查询的响应时间都要比在SQL Server 2005中运行的要短一些,这证明了SQL Server 2005在性能方面的显著改进。对于剩下的两个查询,最高性价比供应商和利润增长(未显示)在不同环境下的响应时间则没有明显的差异,尽管在运行这两个查询时SQL Server 2005 的响应都略快一些。
值得注意的是将SQL Server 2005和 Network Appliance存储设备结合使用是一个强有力的组合。当处理全表扫描时,SQL Server 2000 和 SQL Server 2005从本质上讲都会受到I/O的限制。尽管如此,SQL Server 2005能够组织数据并使I/O请求更有效的进行,从而为disk-limited查询带来4%到 20%不等的数据吞吐量的增长。
[ 本帖最后由 xiaoxinlucky 于 2008-1-30 14:12 编辑 ]