SQL Server 系统性能调优解决方案
使用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,你可以捕捉应用程序典型负载中所发生的事件,然后在Database Engine Tuning Advisor 中将这些事件重现,从而针对数据的索引和分区生成相应建议,这样你就可以优化应用程序的性能了。
在创建了最适合你的应用程序的工作负载的索引和分区之后,你可以使用SQL Server Agent来制定一个自动的数据库维护计划。这个自动的维护会定期的重新组织或重建索引,并更新索引和选择统计,以确保当数据插入和修改你的数据库的物理数据页面片段时一直提供最佳的性能。
Resource Governor
通常,一个单独的服务器用来提供多个数据服务。在一些情况下,许多应用程序和工作负载依赖于同一个数据源。在目前所流行的服务器合并的趋势下,要为一个给定的工作负载提供可预测的性能是很困难的,因为同台服务器上的其它工作负载会竞争系统资源。在一个单独的服务器上有多个工作负载,管理员必须避免出现某些问题,例如使其它工作负载一直等待系统资源的失效查询,或者低优先级的工作负载反过来影响高优先级的工作负载。SQL Server 2008提供了Resource Governor,它使得管理员可以对运行在一个SQL Server实例上的各个工作负载定义和分配优先级。工作负载基于如用户、应用程序和数据库等因素,通过对资源定义限制,管理员可以将失效查询的可能性降至最低,还可以限制独占资源的工作负载。通过设置优先级,管理员可以优化一个关键任务的处理性能,同时维护服务器上其它工作负载的可预测性。
性能套件
SQL Server 2008提供了性能套件,它是一套用来收集、分析、排除故障和存储SQL Server 2008诊断信息的集成框架。性能套件为性能监控提供了一个端对端的解决方案,其中包括针对性能数据的低开销收集、集中化存储、以及分析报表。你可以使用SQL Server 2008管理套件来管理收集工作,例如可以使用数据收集器、启动一个收集集合并查看作为性能状态面板的系统收集集合报表。你还可以使用系统存储结构和性能套件应用程序编程接口(API)来建立你自己的基于性能套件的性能管理工具。
性能套件提供了一个统一的数据收集基础架构,它在每一个你想监控的SQL Server实例中都有一个数据收集器。这个数据收集器非常灵活,它可以管理数据收集范围以适应开发、测试和生产环境。你使用这个数据收集框架就可以轻松地收集性能数据和一般的诊断数据。
该数据收集器基础设施推出了以下新的概念和定义:
1.数据提供商。性能或诊断信息的来源可以包括SQL Trace 、性能计数器和Transact-SQL查询(例如,从分布式的管理视图中获得数据)。
2.收集器类型。一个逻辑封装,它提供了从数据提供商处收集数据的机制。
3.收集项目。一个收集器类型的实例。当创建一个收集项目时为这个项目定义输入属性和收集频率。一个收集项目不能单独存在。
4.收集集合。数据收集的基本单位。一个收集集合是一组收集项目的集合,它们在一个SQL Server 实例上定义和部署。收集集合可以各自独立运行。
5.收集模式。一个收集集合中数据收集和存储的方式。这个收集模式可以设置为缓存或不缓存。收集模式将影响用于该收集集合的工作和时间表的类型。
6.数据收集器是可扩展的,它可以添加新的数据提供者。
报表服务性能
SQL Server 2008报表服务性能引擎被重新开发,以便通过按需处理过程对报表服务添加更好的性能和可扩展性。报表不再局限于内存,因为现在报表处理使用一个文件系统缓存来缓解内存的压力。报表处理还可以适应其它消耗内存的处理。
一个新的渲染架构解决了之前的渲染器版本中存在的内存利用问题。这些新的渲染器还提供了一些改进,例如对CSV渲染器添加了一个真实数据渲染器,并支持在Excel渲染器中内置数据块和内置子报表。