解读SQL Server 2008 R2 SP1的新功能

日期: 2011-08-28 作者:Serdar Yegulalp翻译:孙瑞 来源:TechTarget中国 英文

微软公司在今年的7月中旬发布了数据库平台SQL Server 2008 R2 Service Pack 1(SP1)更新版本,其中对R2版本数据库进行了一系列的Bug修改,并添加了一些新的功能。相比于下一个正式版的SQL Server Denali,虽然SQL Server 2008 R2 SP1的改动并不是很大,但是这些添加的功能在实用性方面还是得到了用户的认可。那么下面我们就来了解一下SP1中的一些新的特性。   新的FORCESCAN查询提示   任何DBA在进行查询优化的时候,都知道scan和seek之间的区别。

Scan是指读取表中每一行数据然后返回查询;而seek使用表的叶数据来找到……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

微软公司在今年的7月中旬发布了数据库平台SQL Server 2008 R2 Service Pack 1(SP1)更新版本,其中对R2版本数据库进行了一系列的Bug修改,并添加了一些新的功能。相比于下一个正式版的SQL Server Denali,虽然SQL Server 2008 R2 SP1的改动并不是很大,但是这些添加的功能在实用性方面还是得到了用户的认可。那么下面我们就来了解一下SP1中的一些新的特性。

  新的FORCESCAN查询提示

  任何DBA在进行查询优化的时候,都知道scan和seek之间的区别。Scan是指读取表中每一行数据然后返回查询;而seek使用表的叶数据来找到能够回答相同查询的行。当查询结果仅涉及到表数据的10-15%时,通常使用seek方式会比较好,当涉及到大量数据时则使用scan,它会读取整个表然后送到内存中然后返回结果,无需分析索引。

  新的FORCESCAN提示功能就和字面上的意思一样,可以确保查询优化器在给定的操作中不使用seek,而强制使用scan。需要提醒的是,FORCESCAN需要谨慎使用,否则会造成查询性能降低的后果:

  SELECT user_type FROM user_table WITH (FORCESCAN)

  上面的语句假定user_type列相对来说并不是独一无二的,也就是所谓的“低基数”列,这时候使用FORCESCAN就和使用索引没有太大差别。

  随着SQL Server查询优化器变得越来越强大,我在自己的程序中已经很少会用到这种提示功能,但是FORCESCAN还是有它的用武之处。强制表扫描是对系统进行拷问测试的一种方法,FORCESCAN在这方面将会发挥积极的作用。

  FORCESEEK查询提示的新功能

  FORCESEEK和FORCESCAN二者是截然相反的,它会强制数据库使用seek。在之前的版本中也存在这一功能,但是在SQL Server 2008 R2 SP1中,DBA可以使用FORCESEEK来指定需要seek的索引或者列:

  SELECT user_name FROM user_table

  WITH (FORCESEEK(user_table_index(user_name))

  如果你能够想到的,在user_table上有一个索引叫做user_table_index,它将user_name作为其中的一列。这会强制查询优化器使用这个索引和列来进行seek。你还可以seek多个列,但是这需要按照它们在索引中的位置顺序来指明出来。

  一个可能的应用场景:你创建了一个系统,其中生成索引后你想要手动进行详细的说明,或者是用存储过程以及内嵌SQL语句来自动生成。

  新的系统对象

  每当SQL Server有版本更新的时候,都会出现一些新的系统对象,用户每次都将它们挖掘出来然后记录到文档当中。下面就是SQL Server 2008 R2 SP1中一些新的系统对象

  •   sys.dm_os_volume_stats:当进行查询的时候,这个动态管理函数将返回存储数据库文件的磁盘信息。比如磁盘上还有多少可用空间,这个卷是否支持压缩。
  •   sys.dm_os_windows_info:返回SQL Server运行的操作系统信息(哪个版本的Windows),其中包括了修订级别以及操作系统语言等。
  •   sys.dm_server_registry:返回现安装的SQL Server相关注册信息。
  •   sys.dm_server_services:返回SQL Server正在运行的服务状态,包括上次启动时间、服务是否运行在集群实例上等。

  支持仿真(512e)硬盘

  存储市场中目前正涌现出新的硬盘驱动器,其中之一就是使用所谓的“512e”格式的硬盘,仿真硬盘运用磁盘的4K扇区,但是在界面上模拟一个512字节的扇区硬盘。在TechTarget之前关于仿真硬盘对Windows Server影响的报道中,作者已经将该硬盘称为先进格式硬盘,而且它对于提升SQL Server这样应用性能方面有很大的优势。因此,微软在SP1中添加了对仿真硬盘的支持,它可以让Windows Server 2008 R2运行更好。

  数据层应用组件架构(DAC Fx)

  数据库架构管理是让每个DBA头痛的事情,但是SQL Server在这方面提供了不错的帮助。数据层应用组件(DAC)就是这样的一个工具:它让数据层对象(基本上就是数据库中所有的东西)写入和部署变得轻松起来。SP1包括了一个新的DAC Fx和DAC升级向导,这两个工具可以帮助SQL Server现有数据库架构进行升级,而且还支持微软新的云数据库平台SQL Azure

  SharePoint PowerPivot磁盘空间控制

  微软PowerPivot数据往往会缓存在SharePoint中,但是DBA还是无法对缓存机制有一个比较直接的控制。SQL Server 2008 R2 SP1可以让DBA控制不活跃数据库在内存中缓存的时间,并对PowerPivot文件进行磁盘清理。如果你的系统中只有少量的PowerPivot数据,而且更改很少,你希望它能够长时间缓存在内存中,那么新的磁盘空间控制功能将会非常有帮助。

  通过sys.sp_db_increased_partitions存储过程将一个表分成15000个分区。

  sys.sp_db_increased_partitions存储过程可以使DBA能够针对一个特定的表设定increased_partitions。在之前的SQL Server版本中,DBA最多能够分成1000个分区,而新的SP1中最多则可以达到15000个分区。这是非常大的一个改进。

  DBA如果希望了解更多关于SQL Server 2008 R2 SP1的技术信息,可以访问微软TechNet社区获得最新的技术咨询。

作者

Serdar Yegulalp
Serdar Yegulalp

Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。

翻译

孙瑞
孙瑞

相关推荐