热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用SQLServer2008进行优化性能

现今的公司需要易访问且可用性好的商业数据,以便他们可以在全球市场中获得一席之地。与易访问数据的这个需求相呼应,关系数据库和分析数据库在规模方面继续发展,内嵌数据库和许多产品一起出现,并且许多

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

本文描述了SQL Server 2008的性能和扩展能力,并解释了你可以怎样使用这些功能来实现:
◆使用可用于数据库引擎、分析服务、报表服务和集成服务的工具和功能来优化任何规模的数据库性能。
◆扩展你的服务器来充分利用新的硬件能力。
◆扩展你的数据库环境来优化响应速度并使你的数据更易于用户访问。

使用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实例中都有一个数据收集器。这个数据收集器非常灵活,它可以管理数据收集范围以适应开发、测试和生产环境。你使用这个数据收集框架就可以轻松地收集性能数据和一般的诊断数据。

该数据收集器基础设施推出了以下新的概念和定义:
◆数据提供商。性能或诊断信息的来源可以包括SQL Trace 、性能计数器和Transact-SQL查询(例如,从分布式的管理视图中获得数据)。
◆收集器类型。一个逻辑封装,它提供了从数据提供商处收集数据的机制。
◆收集项目。一个收集器类型的实例。当创建一个收集项目时为这个项目定义输入属性和收集频率。一个收集项目不能单独存在。
◆收集集合。数据收集的基本单位。一个收集集合是一组收集项目的集合,它们在一个SQL Server 实例上定义和部署。收集集合可以各自独立运行。
◆收集模式。一个收集集合中数据收集和存储的方式。这个收集模式可以设置为缓存或不缓存。收集模式将影响用于该收集集合的工作和时间表的类型。
◆数据收集器是可扩展的,它可以添加新的数据提供者。

当配置数据收集器时,会创建一个默认名称为MDW的关系数据库作为管理数据仓库,其中将存储收集来的数据。这个数据库可以和数据收集器放在同一个系统上,或者放在一个单独的服务器上。管理数据仓库中的对象包括以下三种预配置的模式,其作用各不相同:
◆Core 模式 - 包括用于组织和标识收集到的数据的表和存储过程。
◆Snapshot 模式 - 包括数据表、视图和其它对象,用于支持标准的收集器类型的数据。
◆Custom_Snapshot 模式 - 可以创建新的数据表来支持用户定义的、按标准的、以及扩展的收集器类型所创建的收集集合。
性能套件提供了一组强大的预先配置的系统收集集合,包括Server Activity、 Query Statistics 和Disk Usage,来帮助你快速分析所收集的数据。通常使用◆Server Activity 系统收集集合来开始监控和故障排除。在SQL Server管理套件中发布了一组与每一个系统收集集合相关的报表,你可以将这些报表作为性能状态面板来帮助你分析数据库系统的性能,如图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) 功能来记录对变更表的更新,当数据刷新按计划进行时,可以实现对数据变更的跟踪并确保数据仓库的一致性。


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
author-avatar
_Cokoice
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有