Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1100125
  • 博文数量: 286
  • 博客积分: 3124
  • 博客等级: 中校
  • 技术积分: 5186
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 23:42
个人简介

Bomi

文章存档

2015年(1)

2013年(1)

2012年(281)

2008年(3)

分类: WINDOWS

2012-02-05 10:53:56

概览:
    * 更强大的管理功能
    * 改进的性能和可伸缩性
    * 更好的安全性和可用性
    * 涉及开发人员的变更
Microsoft 再次发布了新版 SQL Server,它承诺可以使数据库管理员的工作更加轻松。最新版本是 SQL Server 2008,它提供了众多的新
特性和功能,可为管理工作带来一系列的好处。
对于那些曾使用过 SQL Server 2005 的数据库管理员来说,他们会在新版本中找到日常经常用到的许多相同功能,但是他们会很快发现这些熟悉的工具在 SQL Server 2008 中都得到了增强。在现有功能基础上建立的新功能极大地减少了在复杂的数据库环境中使用各种功能所需的解决方法或自定义方法的数量。
SQL Server 2008 中的新功能涉及了大量的数据库工作角色,因此很难对其进行分类。当我阐述分属不同主题的功能时,我知道有些读者对我为什么将明显属于类别 Z 的功能 X 归入到类别 Y 中感到奇怪。这是角度的问题,并且受到公司业务开展方式的影响。
我知道数据库用户经常发现自己扮演许多不同的工作角色,通过尽量将这些新功能分解,以使其尽可能适合以下常见类别:管理、可伸缩性、性能、高可用性、安全性、开发以及商业智能。
用于管理的新功能有哪些?
对于数据库管理员(比如我)来说,附加的众多管理功能使 SQL Server 2008 成为一种令人激动的新产品。对于经常要负责管理分布在数十台甚至数百台服务器中的数以百计或千计的大型复杂数据库环境的数据库管理员而言,新的策略管理、多服务器查询功能、配置服务器以及数据收集器/管理仓库功能为他们赋予了强大的能力。
SQL Server 2008 策略管理功能(它实际上在社区技术预览 (CTP) 中被称作宣告管理框架)允许您为一台或多台数据库服务器创建和执行配置策略。利用这些策略,您可以确保每台目标服务器和数据库都应用和维持标准配置设置。在图 1 中可以看到此功能的一个示例。

Figure 1 数据和日志文件位置最佳实践策略
策略是通过一组预定义的层面创建的。每个层面都包含一个 SQL Server 2008 配置设置的子组以及您可以控制的其他事件。将这些层面和条件相匹配即可创建策略。条件是指能够为层面属性所接受的值、配置设置或该层面中包含的其他事件。
条件还指用于策略筛选器的值。现在假设您希望仅针对某个特定数据库执行策略。在这种情况下,您可以创建一个包含该数据库名称的条件,然后将此条件添加到策略中。现在这一策略将仅会应用到此数据库。在这方面请相信我—SQL Server 2008 策略管理可能听起来很复杂,但在实际尝试后,您会发现它非常直观。
当您需要同时对多台服务器执行查询时,可使用新增的多服务器交互和配置服务器功能。您可在 Management Studio 中注册服务器,然后将这些服务器一同放在某个分组下面。当需要对分组中的所有服务器执行策略或查询时,只需右键单击该分组即可。
作为一项附加优点,您可以对此功能进行配置,以便每台服务器返回一个结果集或将所有结果集合并到一个大结果集中。您还可以指定是否希望将服务器和数据库名称作为结果的一部分,以便能够使各服务器的结果分离出来。能够在配置服务器上而非在每个单独的 Management Studio 中存储注册的服务器,这是一个很大的优势。
另一项不错的新管理功能是数据收集器。数据库管理员经常需要从大量的服务器中收集管理数据,许多 DBA 已经为此类操作创建了自己的自定义解决方案。数据收集器是一种内置机制,它有利于收集与管理相关的数据。它允许您使用 SQL Server 代理和 SQL Server Integration Services (SSIS) 创建一种框架,在收集和存储数据的同时,提供错误处理、审计和收集历史记录功能。
与第三方工具和自定义作业不同,数据收集器非常容易被大多数数据库管理员所理解,因为它使用 SQL Server 代理和 SSIS 创建一组作业和软件包,并使用它们来处理连接、收集以及数据存储(如图 2 中所示)。此数据存储到中心位置后,即可将其作为管理仓库加以引用,可通过一组 T-SQL 语句和 SQL Server 2008 Reporting Services 报告进行查看和组织。这种中心数据存储方式使分析和查看数据库环境的总体管理度量标准更加轻松。

Figure 2 数据收集器磁盘使用情况日志文件 (单击该图像获得较大视图)
用于可伸缩性的新功能有哪些?
近年来,SQL Server 数据库管理员发现他们的数据库环境变得越来越大。随着数据库环境的增大,您需要采用一些新的方法和工具来实现大多数企业所需的可伸缩性。SQL Server 2008 推出了多种新功能,可在这些方面提供帮助。
SQL Server 2008 拥有内置的压缩功能,允许您压缩数据库文件以及与相应的数据库相关的事务日志文件。SQL Server 2005 引入了压缩只读文件或文件组中的数据的能力,但这种压缩形式只是使用了 Windows NTFS 的压缩能力。在 SQL Server 2008 中,您可以进行行级和页级压缩,这在数据文件级压缩方面具有前所未有的优势。
行级和页级压缩可减少所需的数据空间量,此外它还可以减少所需的内存量,因为数据在内存中始终保持压缩状态。内存中压缩的数据使内存利用率得到提高,这让许多系统在提高可伸缩性方面受益匪浅。
SQL Server 2008 还推出了备份级压缩。尽管数据库备份仅备份数据库的活动部分,但这仍可能是多达数百 GB 甚至数十 TB 字节的数据量。如果数据库环境存有数 TB 字节的备份文件的多个副本,则这些备份文件通常会占用宝贵的存储空间,而这些空间本来可以得到更有效的利用。在 SQL Server 2008 中,数据库管理员可以压缩其备份文件,从而释放部分此类空间,使其能够用于实时数据。
此外还有资源管理器。这种新功能允许您定义资源的数量,供单独的或成组的工作负载在执行过程中使用。利用资源管理器可以创建一种环境,在这种环境中许多不同的工作负载在一台服务器中共存,而不必担心其中的一个或多个工作负载会使服务器超负荷并致使其他工作负载的性能受到影响。
这种功能的优势在于您可以更有效地使用数据库服务器中可用的资源总量。图 3 显示的是使用资源管理器来限制服务器上的活动的示例。
Figure 3 Limit activity with the Resource Governor
USE master
go
--Drop function
IF OBJECT_ID('rgclassifier_demo','Function') IS NOT NULL
DROP FUNCTION rgclassifier_demo
go
--Create a classifier function for report group
CREATE FUNCTION rgclassifier_demo() RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @group_name AS SYSNAME
  IF (USER_NAME() LIKE '%Launch_Demo%')
         SET @group_name = 'demogroup'
    RETURN @group_name
END
GO
--Drop workload group for anything coming from Management Studio
IF EXISTS (SELECT name FROM sys.resource_governor_workload_groups
  WHERE name = 'demogroup')
BEGIN
  DROP WORKLOAD GROUP demogroup
END
GO
--Create workload group
CREATE WORKLOAD GROUP demogroup
GO
--Register the classifier function with
--Resource Governor
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_demo)
GO
--Alter the dbogroup workload group to only
--allow 10% of CPU for each workload request
ALTER WORKLOAD GROUP demogroup
WITH (REQUEST_MAX_CPU_TIME_SEC = 10)
GO
--Create a new resource pool and set a maximum CPU limit for all workloads.
IF EXISTS (SELECT name FROM sys.resource_governor_resource_pools
  WHERE name = 'pooldemo')
DROP RESOURCE POOL pooldemo
GO
CREATE RESOURCE POOL pooldemo
WITH (MAX_CPU_PERCENT = 40)
GO
--Configure the workload group so it uses the
--new resource pool.
ALTER WORKLOAD GROUP demogroup
USING pooldemo
GO
--Apply the changes to the Resource Governor
--in-memory configuration.
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
用于性能的新功能有哪些?
在 SQL Server 2008 中,数据库的一般性能得到了改进。借助 SQL Server 2008 中的几种新功能,您现在不但可以控制和监视数据库的性能,还可以控制和监视那些依靠这些数据库来执行的应用程序的性能。
如果每秒钟要执行大量的事务处理,则在事务处理期间通常会发生的锁定现象将对数据库应用程序的性能造成负面影响。SQL Server 的设计旨在通过将锁从较小的行级和页级锁升级到较大的表级锁,来减少某个进程持有的锁总数。但是请务必要清楚,这种锁升级可能会导致问题。例如,一个单独的事务处理可能会锁定整个表,致使其他事务处理无法使用该表。
SQL Server 2008 采用了表分区机制(在 SQL Server 2005 中就已引入),允许 SQL Server 引擎在将锁升级到表级之前先升级到分区级。这种中间级别的锁定可显著降低锁升级对每秒处理成百上千个事务的系统的影响。
在处理查询与已分区表的交互操作时,SQL Server 2008 提供了多种新的查询处理器改进功能。查询优化器现在可以针对分区执行查询搜索,就像针对单独的索引执行一样,因为它仅使用分区 ID,而不是表级的分区机制。
用于高可用性的新功能有哪些?
随着数据库环境变得越来越复杂而数据库变得越来越大,确保这些数据库的可用性也就变得越来越困难。SQL Server 2008 中仍然保留了您在过去一直使用的用于实现高可用性的熟悉机制。但是其中有些功能在 SQL Server 2008 中得到了增强,此外还添加了一些新功能。
在 SQL Server 2005 中,许多管理员通过执行数据库镜像来实现高可用性。SQL Server 2008 为数据库镜像方法提供了许多改进功能。例如,过去在将事务日志数据从主体数据库移动到镜像数据库时,数据库镜像有时会出现性能问题。为了解决这一问题, SQL Server 2008 会在将信息发送到镜像事务日志进行强化前先压缩信息,以减少从主体事务日志跨网络移动到镜像事务日志的信息量。
您现在可以修复主体数据库中损坏的数据页面。如果主体数据库由于错误 823 和 824 而出现损坏的数据页面,主体可以从镜像服务器请求这些数据页面的最新副本。这种对正确数据页面的请求是一种自动过程,对当前访问主体数据库的任何用户而言都是透明的。
“热插 CPU”是另一项新功能,它允许您在不影响服务器上驻留的数据库可用性的情况下,在数据库服务器中插入额外的 CPU。但是必须要清楚,热插 CPU 有一些限制,比如它只能用在运行 64 位基于 Itanium 的 Windows Server 2008 Enterprise Edition 或 Datacenter Edition 的服务器中,并且需要 SQL Server 2008 的 Enterprise Edition 版本。
用于安全性的新功能有哪些?
SQL Server 2005 引入了采用数据加密形式的数据安全性。SQL Server 2008 在加密方面有了极大的增强,这是由于引入了下面两种功能:可扩展密钥管理和透明数据加密。
可扩展密钥管理提供了一种增强的结构,可以安全存储在加密基础结构中使用的密钥—不仅是在数据库自身中,还可以在第三方软件模块或带有硬件安全模块的数据库以外。
透明数据加密可以为加密数据提供更高的灵活性,因为对其而言加密是数据库的一个属性,而非仅仅是代码行中的函数结果。这样在数据级执行加密时,管理员就无需对其数据库结构和应用程序代码进行大量的改动。图 4 中的代码显示的是如何使用透明数据加密方法来加密数据库。
Figure 4 Using Transparent Data Encryption
USE master;
GO
--Create a master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YouWillNeedToCreateAStrongPassword';
GO
--Create a certificate to use with TDE
CREATE CERTIFICATE TDECERT WITH SUBJECT = 'TDECert'
GO
--Change to the database to encrypt
USE AdventureWorks
GO
--Create your database master key
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128 --Use a strong algorithm
ENCRYPTION BY SERVER CERTIFICATE TDECERT
GO
--Alter the database to encrypt it with the
--master database key
ALTER DATABASE AdventureWorks
SET ENCRYPTION ON
GO
开发人员策略的改变有哪些?
从 SQL Server 2008 的改进中直接受益的不仅只有数据库管理员。对于数据库开发人员,新版本也为他们提供了大量的新功能。从多种全新的 T-SQL 增强功能到可以帮助开发人员创建和利用数据库查询的新组件,不一而足。
许多数据库开发人员负责创建的查询需要用来返回其应用程序所需的数据。您可能熟悉 LINQ(语言集成查询)工具,它允许数据库开发人员使用基于 Microsoft .NET 的编程语言而非普通的 T-SQL 语句向数据库发出查询请求。SQL Server 2008 向 SQL 提供程序提供了新的 LINQ 命令,可以允许开发人员直接对 SQL Server 表和列发出 LINQ 命令,从而增强了 LINQ 的功能。这将缩短创建新数据查询所需的时间。
对数据库进行开发时,开发人员会使用较高级别对象,将其映射到单独的数据库表和列。这些对象(也称为实体)代表数据库应用程序所需的数据,因此开发人员并不需要了解该数据的实际存储结构以及数据库的架构。新的 ADO.NET 实体框架现在允许开发人员使用这些实体来创建数据库查询。底层数据库结构的抽象化可极大地提高开发人员的生产率。
SQL Server 2008 为 T-SQL 提供了许多不同的增强功能,可以提高数据库开发人员的效率。新的 MERGE 语句就是一个例子,它允许开发人员在试图插入数据前先检查该数据是否存在。执行 INSERT 语句之前所做的这项检查允许数据进行更新。现在不再需要创建复杂的连接来更新已存在的数据并插入不存在的数据,所有这些都可以在一个单独的语句中完成。
此外,从合并的日期/时间数据类型中分离时间和日期数据也变得更加简单。SQL Server 2008 引入了两种独立的数据类型来处理日期和时间数据。不同数据类型的转换可以改进许多查询的性能,因为无需对数据执行任何操作即可将其用于查询。
创建较新的数据库结构时,数据库开发人员经常会发现他们必须要扩展数据库的结构才能执行映射应用程序。SQL Server 2008 使用全新的空间数据类型来帮助解决此问题。GEOGRAPHY 和 GEOMETRY 这两种空间数据类型允许开发人员将位置特定的数据直接存储到数据库中,而无需将这些数据元素细分为适合其他标准数据类型的格式。图 5 中的代码是一个简单的空间表的示例。
Figure 5 A simple spatial table
IF OBJECT_ID ( 'Demo_SpatialTable', 'Table' ) IS NOT NULL
    DROP TABLE Demo_SpatialTable
GO
--Create table to hold spatial data
CREATE TABLE Demo_SpatialTable
    ( SpatialID int IDENTITY (1,1),
    SpatialInputCol geography,
    SpatialOutputCol AS SpatialInputCol.STAsText() )
GO
--Insert data into table
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO
--View data to see that data has been converted and stored in col2
SELECT * FROM Demo_SpatialTable
过去,数据库开发人员经常会遇到如何存储及利用大型二进制对象(例如文档和介质文件)的问题。常用的方法是将文件存储在数据库以外,而只在数据库中存储一个到外部文件的指针。但是使用这种方法时,在移动文件时必须要记得同时更新指针。
SQL Server 2008 使用新的 FILESTREAM 数据类型来解决此问题。使用这种数据类型,文件仍可以存储在数据库以外,但是数据被视为数据库的一部分从而实现事务的一致性。这将允许使用常规的文件操作方法,同时保持数据库在性能和安全方面的优势。
什么是业务智能?
过去几年 SQL Server 使用量增加的原因主要是由于采纳了业务智能策略。业务智能功能对于 SQL Server 而言并不新鲜,但 SQL Server 2008 为其赋予了一些新的内涵。
例如,当数据在数据仓库中存储时,经常会由于 NULL 值的存在而浪费空间。存储 NULL 值的列占据着列中定义的最大允许数据大小的空间。也就是说,如果某列有数千个 NULL 值,它实际上会占用许多 MB 的空间而不存储任何数据。
SQL Server 2008 引入了稀疏列的概念,允许存储的 NULL 不占用磁盘上的任何物理空间。因为稀疏列不消耗实际空间,因此包含稀疏列的表可以不受 1,024 列的限制。
SQL Server 2008 还引入了“变更数据捕获”这种新机制,用于管理那些需要载入到数据仓库中的增量变更。它捕获变更的数据并将其放入一组变更表中。相对于建立自定义插入语句、然后在更新数据仓库前千方百计弄清对现有数据行所做变更的方法而言,在容易消耗的存储架构中捕获更新、删除和插入的数据可允许这些表通过增量方式载入数据仓库。
结束语
以上只是对 SQL Server 2008 内容的简单概述。SQL Server 2008 不但引入了众多新功能,还对许多现有功能进行了更新,可使数据库管理员和数据库开发人员的工作更加轻松。总而言之,对于当今需求时刻都在变化的数据库而言,它可以提供更出色的性能和可伸缩性。

阅读(558) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~