揭秘SQL Server 2008性能和可扩展性
作者:佚名 来源:天极网 发布时间:2009-03-10 14:47:00
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 实例上定义和部署。收集集合可以各自独立地运行。
· 收集模式。一个收集集合中数据收集和存储的方式。这个收集模式可以设置为缓存或不缓存。收集模式影响用于该收集集合的工作和时间表的类型。
猜你喜欢
- 比如,在使用DWR的时候,如果你想传递下拉框的参数到后台的话,此时就需要先获取到下拉框的值了。 其实想要获取到下拉框的值是很简单的。 最关键
- 将进程挂起(Suspend) 而非 阻塞(Block)如果用sleep() 进程将阻塞假设进程下有两个线程 那么这两个线程会继续运行要使进程
- 从控制器中获取URL的值有三种方式:1、使用Request.QueryString[]例如:string value = Request.Q
- 最近研究研究了css,少不了去网上分析一下别人的网页, 但很多网站的css文件都是要么写在一行,要么一个换行都没有,看起来极其痛苦,所以写一
- 昨天在得写“RSS收藏”栏目展现的时候我让RSS的列表用弹出的形式展现了,开始是直接的控制 style.display 来做的,但是感觉有点
- MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文主要介绍了show命令的主要用
- 一 字典的嵌套在机器学习实战决策树部分,生成决策树时用到了字典的嵌套。>>>s1={'no surface'
- python 封装tokenimport datetimeclass MyJwt:def __init__(self): &n
- 1. defer的简单介绍与使用场景defer是Go里面的一个关键字,用在方法或函数前面,作为方法或函数的延迟调用。它主要用于以下两个场景:
- 用Python随机生成学生姓名,三科成绩和班级数据,再插入到PostgreSQL中。模块用psycopg2 randomimport ran
- 这里的等价不是说function的toString相同,也不是说function的引用相同,而是说对于两个function A和B,如果它们
- isset($var); //为false 没有定义没有定义为假 $var = ''
- 前言特别说明: 本文只适合新手学习这篇文章带我们入门go语言的定义变量的方式,其实和javascript很相似,所以特意总结在此。在go语言
- 第一次打包vue的项目部署到服务器下时,发现初次加载特别的缓慢,将近20s页面才加载出来,完全没有开发环境上的那么流畅。主要原因是页面在打包
- mysql版本号是5.7.28,表A有390W条记录,使用InnoDB引擎,其中varchar类型字段mac已建立索引,索引方法为B-tre
- Python input()函数Python input()函数教程在 Python 中,input() 函数用于获取用于的输入,并给出提示
- 上一课:ACCESS入门教程:初识Access 2000窗口接口简介 通过上一课的学习,你是否感觉Access的窗口和接口还有点搞不清楚,对
- 1.resource fopen(string $filename, string $mode [,bool $us
- 非常抱歉,今天早上 6:37~8:15 期间,由于获取网站首页博文列表的 SQL 语句出现突发的查询超时问题,造成访问网站首页时出现 500
- 使用 os 模块判断文件是否存在os.path.isfile(path)判断目录是否存在os.path.isdir(path)判断路径是否存