当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 揭秘SQL Server 2008性能和可扩展性

MSSQL
最簡便的備份MySql資料庫方法
MS SQL 数据库备份和还原的几种方法
深入浅出SQL系列教程之SQL语言简介
Asp备份与恢复SQL Server
实战MSSQL 2000数据库之MSSQL Server安装
五种提高SQL Server性能的方法
SQL Server数据库备份和恢复措施
INSERT语法使用技巧一例
sql注入防范方法
操作数据库结构Sql语句
精妙SQL语句介绍
SQL Server常见连接错误
SQL如何备份并压缩备份文件?
Access数据库升迁SQLServer
SQL Server中如何计算农历
SQL SERVER Agent服务使用技巧小结
SQL SERVER使用嵌套触发器
“SQL Server不存在或访问被拒绝”问题的解决
SQL Server 管理常用的SQL和T-SQL(二)
谈SQL Server 2005中的T-SQL增强

MSSQL 中的 揭秘SQL Server 2008性能和可扩展性


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 133 ::
收藏到网摘: n/a

1.导言

现今的公司需要易访问的和可用性好的商业数据,以便他们可以在全球市场中获得一席之地。与易访问数据的这个需求相呼应的,关系数据库和分析数据库在规模方面继续发展,内嵌数据库和许多产品一起出现,并且许多公司将服务器合并来减轻管理工作。当公司的数据环境在规模和复杂度方面持续发展的同时他们必须维护最佳的性能。

这篇白皮书描述了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支持最新的技术趋势,为公司提供了灵活扩展单独的服务器和合并工作负载到这些服务器上的能力。它还给公司提供了扩展大型数据库所必需的技术。