摘要 - download.microsoft.comdownload.microsoft.com/.../databasemaintenancesharep…  · web...

22
针针 Microsoft ® SharePoint ® 2010 针针针针 针针针针 Bill Baer Bryan Porter Paul S. Randal (SQLskills.com) 2011 年 7 年 年年 SharePoint 2010 年年年年年年年年年年年年年年年年年年年年年年

Upload: others

Post on 27-Sep-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

针对 Microsoft® SharePoint® 2010 产品的数据库维护 作者: Bill Baer

Bryan Porter

技术审阅人员:Paul S. Randal (SQLskills.com)

发布日期: 2011 年 7 月概述:本白皮书介绍了针对承载 SharePoint 2010 产品的内容和配置设置的数据库的建议的维护策略。

Page 2: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

本文档“按原样”提供。 本文档中阐述的信息和观点(包括 URL 和其他 Internet 网站引用)可能随时发生更改,恕不另行通知。 使用本文档的风险由您自行承担。 此处所述的某些示例仅供演示之用,纯属虚构。 无意进行真实的关联或联系,请勿据此妄加推测。 本文档并不为您提供对任何 Microsoft 产品中任何知识产权的任何法律权利。 您可以出于内部参考目的复制和使用本文档。 © 2011 Microsoft Corporation。 保留所有权利。

© 2011 Microsoft Corporation。保留所有权利。 页 | 2若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 3: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

摘要本白皮书提供了有关维护承载 Microsoft® SharePoint® 2010 数据和配置的数据库的信息和准则。 它还描述并提供了使用 SharePoint 2010 时建议的数据库维护任务示例。 在您执行任何数据库维护任务或修改 SharePoint 2010 数据库之前,请阅读以下支持文章: 对更改 Office 服务器产品和 Windows SharePoint Services 使用的数据库的支持 (http://go.microsoft.com/fwlink/?LinkId=110812&clcid=0x409)。

© 2011 Microsoft Corporation。保留所有权利。 页 | 3若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 4: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

目录摘要................................................................................................................................................ 3

简介................................................................................................................................................ 5

使用 DBCC CHECKDB 检查一致性错误.........................................................................................5

关于 DBCC CHECKDB................................................................................................................... 5

DBCC CHECKDB 和性能...............................................................................................................7

度量并减少索引碎片化情况.............................................................................................................7

联机与脱机索引重新生成................................................................................................................8

度量 SQL Server 2008 数据库或 SQL Server 2005 数据库中的碎片化情况 (sys.dm_db_index_physical_stats).............................................................................................8使用 sys.dm_db_index_physical_stats 动态管理视图............................................................9

降低数据库的碎片化水平..............................................................................................................10运行数据库维护运行状况分析器规则........................................................................................10

降低特定表及其索引的碎片化水平................................................................................................12使用 ALTER INDEX.................................................................................................................. 12

通过设置填充因子对索引性能进行微调.........................................................................................13

压缩数据文件................................................................................................................................ 13使用 Transact-SQL 命令压缩数据库.........................................................................................14使用 SQL Server 2008 Management Studio 压缩数据库..........................................................15

创建 SQL Server 2008 维护计划..................................................................................................16配置 SQL Server 2008 数据库维护计划....................................................................................16

小结............................................................................................................................................... 23

© 2011 Microsoft Corporation。保留所有权利。 页 | 4若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 5: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

简介日常数据库维护对于 Microsoft® SharePoint® 2010 数据库的平稳运行十分重要。 本白皮书介绍了 SharePoint 2010 所支持的数据库维护任务。 针对 SharePoint 2010 数据库的建议的维护任务包括: 检查数据库的完整性。 通过重新组织或重新生成索引来对其进行碎片整理。 设置服务器的填充因子。 注意:本文讨论了数据库维护而非容量或性能规划。 有关容量或容量规划的信息,请参阅存储和 SQL Server 容量规划和配置 (SharePoint Server 2010) (http://go.microsoft.com/fwlink/?LinkId=217482)。 虽然早期版本的 SharePoint 产品和技术需要手动干预来执行索引碎片整理和统计信息维护,但 SharePoint 2010 会自动为其数据库执行此过程。 此过程将按照几个 SharePoint 运行状况分析器规则来完成。 这些规则每天都将对数据库索引和统计信息的运行状态进行评估,并将自动为下列数据库处理这些项目:

配置数据库 内容数据库 User Profile Service 应用程序配置文件数据库 User Profile Service 应用程序社会数据库 Web Analytics Service 应用程序报表数据库 Web Analytics Service 应用程序临时数据库 Word Automation Services 数据库

此外,可以通过执行 Transact-SQL 命令或运行数据库维护向导来执行数据库维护任务。 我们将先介绍您可以使用的 Transact-SQL 命令,然后说明如何使用 Microsoft SQL Server® 数据库维护向导来创建数据库维护计划。 注意: 在本白皮书中,我们仅提供了 SQL Server 2008 R2 和 SQL Server 2005 的详细示例。 使用 DBCC CHECKDB 检查一致性错误进行日常维护操作时首先要进行一致性检查以确保您的数据和索引未损坏。 您可以使用 DBCC(数据库控制台命令)CHECKDB 语句对数据和索引页执行内部一致性检查。 绝大多数的数据库一致性问题都是由 I/O 子系统错误导致的。 但是,当数据库服务器错误关闭或驱动器发生故障时,可能会影响数据库的一致性。 明显的性能和可用性问题有时是可能存在数据库一致性问题的症状。 每周应对您的 SharePoint 2010 数据库执行至少一次数据库一致性检查,并在发生一些事件(如数据库服务器或 I/O 子系统出现故障)时执行该检查。 © 2011 Microsoft Corporation。保留所有权利。 页 | 5若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 6: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

关于 DBCC CHECKDB DBCC CHECKDB 通过执行下列操作来检查指定数据库中所有对象的逻辑完整性和物理完整性:

运行 DBCC CHECKALLOC (http://go.microsoft.com/fwlink/?LinkId=110815&clcid=0x409)

的等效项来验证数据库中的分配结构。 对数据库中的每个表和视图运行 DBCC CHECKTABLE (http://go.microsoft.com/fwlink/?

LinkId=162093) 的等效项来验证其逻辑完整性和物理完整性。 对数据库运行 DBCC CHECKCATALOG (http://go.microsoft.com/fwlink/?

LinkId=110834&clcid=0x409) 的等效项来验证其元数据的一致性。 这意味着,DBCC CHECKALLOC、DBCC CHECKTABLE 或 BCC CHECKCATALOG 命令不必独立于 DBCC CHECKDB 运行。 我们建议您运行 DBCC CHECKDB 而非单个操作,这是由于 DBCC CHECKDB 可识别各种可能的错误,因此在生产环境中运行它会更为安全。 就内存、I/O 和 CPU 而言,DBCC CHECKDB 将占用大量资源。 对生产系统运行 DBCC CHECKDB 的替代方法是,对另一台服务器上的 SharePoint 数据库的还原备份运行 DBCC CHECKDB,从而减少生产系统中的一致性检查工作负荷。 我们建议您先运行 DBCC CHECKDB,若显示错误,则使用最新的备份来还原受影响的数据库。 重要提示 - 不能将 DBCC CHECKDB 与 REPAIR_ALLOW_DATA_LOSS 一起运行。 但是,可以将 DBCC_CHECKDB 与 REPAIR_FAST 和 REPAIR_REBUILD 一起运行,因为这些命令只会更新关联数据库的索引。 下表包含来自 DBCC CHECKDB 的示例输出。 “Contoso_Content_1”的 DBCC 结果。 Service Broker 消息 9675,状态 1: 已分析的消息类型: 14.Service Broker 消息 9676,状态 1: 已分析的服务约定: 6.Service Broker 消息 9667,状态 1: 已分析的服务: 3.

Service Broker 消息 9668,状态 1: 已分析的服务约定: 3.Service Broker 消息 9669,状态 1: 已分析的会话端点: 0.

Service Broker 消息 9674,状态 1: 已分析的会话组: 0.

Service Broker 消息 9670,状态 1: 已分析的远程服务绑定: 0.“sys.sysrowsetcolumns”的 DBCC 结果。 对象“sys.sysrowsetcolumns”的 21 页中有 2663 行。 “sys.sysrowsets”的 DBCC 结果。 对象“sys.sysrowsets”的 4 页中有 309 行。

© 2011 Microsoft Corporation。保留所有权利。 页 | 6若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 7: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

…更多

CHECKDB 在数据库“Contoso_Content_1”中发现 0 个分配错误和 0 个一致性错误。 DBCC 执行完毕。 如果 DBCC 输出了错误信息,请与系统管理员联系。

表 1. DBCC CHECKDB 示例输出有关对 SQL Server 2008 使用 DBCC CHECKDB 的详细信息,请参阅 DBCC CHECKDB (Transact-SQL) (http://go.microsoft.com/fwlink/?LinkId=217483)。

DBCC CHECKDB 和性能我们建议您在非生产时间运行一致性检查,因为运行 DBCC CHECKDB 会占用大量资源(就 I/O、CPU、内存和 tempdb 空间而言)。 通常,会有这样一个误解,即 DBCC CHECKDB 获得了阻止锁定;这种误解在 SQL Server 2000 之前并不存在。 有关未获得阻止锁定的 DBCC CHECKDB 的详细信息,请参阅“SQL Server DBA 一日一话: (第 2 页,共 30 页)DBCC CHECKDB 导致阻止”(http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(230)-DBCC-CHECKDB-causes-blocking.aspx (可能为英文网页) )。 您可能会发现,对于您的生产系统而言,运行 DBCC CHECKDB 的所消耗的资源过多。 在这种情况下,请不要尝试一次对一个表运行一致性检查,因为此操作会导致整体更易出现问题。 减少在生产系统上执行完整性检查所产生的开销的最佳方法是,执行下列操作之一:

使用 WITH PHYSICAL_ONLY 选项可减少 CPU 和内存使用率。 在单独的 SQL Server 上还原数据库备份并对数据库的已还原副本运行一致性检查。

有关这些选项的详细信息,请参阅由 Paul S. Randal 撰写的此博客文章(可能为英文网页)。 度量并减少索引碎片化情况当表或索引中页的逻辑顺序(由索引键定义)与数据文件中页的物理顺序不一致时,会出现索引碎片化情况。 这还意味着,数据文件页上的数据密度较小,导致浪费磁盘空间、内存和 I/O。 对表进行多次插入、更新或删除操作会出现索引碎片化情况。 下图展示一个新生成的非碎片索引,然后展示了一个在进行多次插入、更新和删除操作后出现的碎片索引。 红色箭头表示索引的物理顺序,黑色箭头表示索引页的逻辑顺序。

图 1. 非碎片索引(图像来源: Paul S. Randal)

© 2011 Microsoft Corporation。保留所有权利。 页 | 7若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 8: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

图 2. 碎片索引(图像来源: Paul S. Randal)由于插入、更新和删除操作不是均匀分配在表和索引行中,因此每页的填充度(或数据密度)会随时间发生变化。 对于扫描部分或所有表索引的查询,碎片会导致额外的页面读取,这将阻碍对数据进行并行扫描并会大大影响搜索性能。 索引碎片会导致性能下降和空间利用率较低,而且即使在适度使用的数据库上,索引也会快速地碎片化。 在实施索引碎片维护计划之前,您需要先了解哪些表和索引的碎片化程度最大,然后创建一个重新生成或重新组织这些索引的维护计划。 在 SharePoint 2010 中,经常碎片化的表的示例为 AllDocs,其中包含文档库、其关联文档和列表与列表项以及其各自的元数据。 索引的碎片水平用逻辑顺序和物理顺序不同的索引页的百分比表示。 联机与脱机索引重新生成联机索引重新生成仅在 SQL Server Enterprise Edition、SQL Server Developer Edition 和 SQL Server Evaluation Edition 中可用。 本白皮书中所述的方法考虑到了这一点。 如果承载特定数据库的 SQL Server 版本不支持联机索引重新生成,或如果要重新生成的索引无法进行联机索引重新生成,则显示的过程将回到脱机索引重新生成。 索引可能因存在 LOB(大型对象)列(例如,包含 NVARCHAR(MAX)、IMAGE 等数据类型的列)而无法进行联机重新生成。 有关联机索引重新生成的信息,请参阅联机索引操作的工作方式 (http://go.microsoft.com/fwlink/?LinkId=217492)。 在执行脱机索引重新生成时,将在重新生成过程中采用表级别锁定。 这可能会阻止对表进行写入操作或根本不允许访问表。 由于存在 LOB 列,因此始终会使用脱机索引重新生成来重新生成 SharePoint 数据库中的许多索引。 即使使用联机索引重新生成,操作过程中仍有两个时间点会出现表暂时锁定的情况,这会导致阻止。 因此,我们建议您始终将索引重新生成活动安排在活动较少的时段进行。 度量 SQL Server 2008 数据库或 SQL Server 2005 数据库中的碎片化情况 (sys.dm_db_index_physical_stats)在 SQL Server 2008 或 SQL Server 2005 中,可使用 sys.dm_db_index_physical_stats 动态管理视图来确定指定表或视图中的索引的碎片化情况。

© 2011 Microsoft Corporation。保留所有权利。 页 | 8若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 9: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

在度量碎片化情况时,我们建议您监视列 avg_fragmentation_in_percent。 avg_fragmentation_in_percent 的值应尽可能地接近于零以实现最大性能。 但是,0% 到 10% 之间的值也是可以接受的。 有关详细信息,请参阅 sys.dm_db_index_physical_stats (http://go.microsoft.com/fwlink/?LinkId=110839&clcid=0x409)。 表 2 显示了来自 sys.dm_db_index_physical_stats 的示例结果,其中一行的 avg_fragmentation_in_percent 值为 9.375。 database_id index_type_desc

alloc_unit_type_

desc

avg_fragmentation_

in_percent

10 CLUSTERED INDEX IN_ROW_DATA 0

10 NONCLUSTERED INDEX IN_ROW_DATA 0

10 NONCLUSTERED INDEX IN_ROW_DATA 0

10 CLUSTERED INDEX IN_ROW_DATA 0

10 NONCLUSTERED INDEX IN_ROW_DATA 0

10 CLUSTERED INDEX IN_ROW_DATA 9.375

表 2. 来自 sys.dm_db_index_physical_stats 的示例结果 使用 sys.dm_db_index_physical_stats 动态管理视图1. 在任务栏上,单击“开始”,依次指向“所有程序”和“Microsoft SQL Server 2008”,然后单击“SQL Server Management Studio”。 若要将 sys.dm_db_index_physical_stats 与数据库对象一起使用,您必须知道数据库 ID 和对象 ID。

2. 在对象资源管理器中选择内容数据库,然后单击“新建查询”。 执行下列脚本。 SELECT DB_ID() AS [Database ID];

注意: 在不指定数据库名称的情况下使用 DB_ID 时,当前数据库的兼容性级别必须为 100(SQL Server 2008 数据库)或 90(SQL Server 2005 数据库)。 如果您已从早期版本的 SQL Server 升级,则必须在 DB_ID 语句中指定一个数据库名称。 有关兼容性级别的详细信息,请参阅 sp_dbcmptlevel (Transact-SQL) (http://go.microsoft.com/fwlink/?LinkId=110840&clcid=0x409)。

3. 对已选数据库或对象执行 sys.dm_db_index_physical_stats。 您不仅可以指定数据库,还可以指定表或索引。 语法:

sys.dm_db_index_physical_stats (

© 2011 Microsoft Corporation。保留所有权利。 页 | 9若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 10: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

{ database_id | NULL | 0 | DEFAULT }

, { object_id | NULL | 0 | DEFAULT }

, { index_id | NULL | 0 | -1 | DEFAULT }

, { partition_number | NULL | 0 | DEFAULT }

, { mode | NULL | DEFAULT }

)

您在使用 sys.dm_db_index_physical_stats DMV 时应加倍小心,因为它会占用大量资源。 有关介绍它的各种使用方法的全面指南,请访问深入了解 sys.dm_db_index_physical_stats (可能为英文 网页)(http://www.sqlskills.com/BLOGS/PAUL/post/Inside-sysdm_db_index_physical_stats.aspx)。

© 2011 Microsoft Corporation。保留所有权利。 页 | 10若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 11: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

降低数据库的碎片化水平若要降低索引的碎片化水平,请遵循以下准则。 运行数据库维护运行状况分析器规则SharePoint 2010 附带了运行状况分析器规则框架。 此规则框架配置了大量规则,用于监视 SharePoint 环境的运行状况并在某些情况下执行相应的操作来解决特定类型的问题。 SharePoint 2010 附带了多个与内容数据库维护相关的规则。 一些规则可自动降低某些 SharePoint 数据库的索引碎片化水平,有一些规则可检查过时的统计信息并在必要时更新这些信息。 这些运行状况分析器规则将替代 SharePoint 产品和技术 Service Pack 2 中引入的更新的数据库统计信息计时器作业。 默认情况下,这些规则配置为依据每日、每周或按需变化(取决于规则目标)的计划执行。 所有配置为每日执行且与特定的 SharePoint 服务关联的运行状况分析器规则都将由同一计时器作业执行。 一旦调整此计时器作业的计划,就将调整配置为每日执行且与该服务关联的运行状况分析器规则在一天中的执行时间。 本白皮书中讨论的所有规则都与 SharePoint Timer Service 关联。 配置为以不同的时间间隔(如每周)执行或与其他服务关联的运行状况分析器规则具有不同的计时器作业。 将运行状况分析器规则配置为每周执行意味着,运行状况分析器规则将与针对特定服务(与运行状况分析器规则关联)配置为每周执行的计时器作业一起执行。 此执行将按已为计时器作业定义的计划来执行。 可通过选择管理中心内的“运行状况分析器规则”页的功能区中的“立即运行”来手动运行状况分析器规则。 运行这些规则将导致评估索引和统计信息的运行状况,并导致索引重新生成和重新计算(视情况而定)。 SharePoint 使用的数据库包含碎片索引 - 当您运行此规则时,将执行下列任务:

此规则报告索引出现了碎片。 这是因为评估索引的运行状况是一个开销很大的操作。 基于状况分析器规则执行的详细情况,此规则将始终报告索引出现了碎片以触发纠正措施。

对于每个 SharePoint 数据库,规则操作将查找 proc_DefragmentIndices 存储过程,如果找到此过程,则将执行它。 在执行此存储过程期间,将在数据库中生成一个包含所有索引的列表。 将评估每个索引目前的碎片化水平。 任何碎片化水平超过 30% 的索引都会被视为需要重新生成。

假定 SQL Server 的版本支持联机索引重新生成,对每个索引尝试进行联机索引重新生成。 如果尝试失败,则可能是因为基础索引不支持联机重新生成(因使用了 LOB 列所致),将执行脱机索引重新生成。

如上所述,此规则并不适用于 SharePoint 环境中的每个数据库。 某些数据库可以使用其他规则来执行类似的维护活动。 搜索 – 一个或多个包含碎片索引的属性数据库 - 此规则可维护 SharePoint 2010 企业级搜索属性数据库中的索引。 默认情况下,此规则配置为在服务器场中的任意服务器上每周执行一次。 对此规则的所有处理(包括纠正措施)都将在规则执行的检查 阶段进行。 这意味着,如果您希望管理企© 2011 Microsoft Corporation。保留所有权利。 页 | 11若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 12: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

业级搜索属性数据库的索引重新生成,那么只将此规则配置为不自动重新生成索引是不够的。 您必须完全禁用规则以避免 SharePoint 2010 自动执行索引维护操作。 当您运行“搜索 – 一个或多个包含碎片索引的属性数据库”时,将执行下列任务:

此规则确认环境处于可安全执行索引重新生成的状态。 对于每个配置为搜索本地服务器场内的应用程序的属性数据库,此规则会执行

proc_MSS_DefragSearchIndexes 存储过程。 在执行此存储过程期间,将生成一个索引列表,其所有索引的平均索引碎片水平超过 10%。

该列表中影响属性数据库性能的所有索引都将重新生成。 如果 SQL Server 版本支持联机索引重新生成,则会执行联机索引重新生成。 如果尝试进行联机索引重新生成但失败,则将以脱机方式重新生成索引。

搜索 - 一个或多个包含有碎片索引的爬网数据库 - 此规则可维护 SharePoint 2010 企业级搜索爬网数据库内的索引。 此规则默认配置为仅按需执行。 此规则可从服务器场中的任意服务器执行。 在执行过程中,此规则将总是报告正在产生碎片的爬网数据库索引。 这是因为检查数据库中的碎片开销很大。 因此,只禁用此规则的“修复”活动将导致所有爬网数据库都会被报告为运行状况不佳,即使最近重新生成过其索引的爬网数据库也是如此。 为了手动管理爬网数据库内的索引维护,您应完全禁用“搜索 - 一个或多个包含有碎片索引的爬网数据库”规则。 当运行“搜索 - 一个或多个包含有碎片索引的爬网数据库”时,将执行下列任务:

此规则确认环境处于可安全执行索引重新生成的状态。 对于每个配置为搜索本地服务器场内的应用程序的爬网数据库,此规则都将执行

proc_MSS_DefragGathererIndexes 存储过程。 重新生成列表中爬网数据库性能中的每个索引。 如果 SQL Server 版本支持联机索引重新

生成,则会执行联机索引重新生成。 如果尝试进行联机索引重新生成但失败,则将以脱机方式重新生成索引。

请注意,无论碎片化水平如何,“搜索 - 一个或多个包含碎片索引的爬网数据库”规则都将重新生成爬网数据库中的每个索引,这一点很重要。 如果承载爬网数据库的 SQL Server 的版本支持此规则,则它还会启用页面级数据压缩。 由于爬网数据库的特性,您未料到需要经常对此数据库进行碎片整理。 在首次对您的内容进行完全爬网后,请执行此规则。 然后,监视爬网数据库内的索引的碎片化水平,并在索引碎片化水平提高时执行此规则。 此情况可能因突然添加或删除大量爬网内容导致发生 – 例如,由环境清理引起的内容排除的过程中,或在加载新的内容源(如文件共享或大型 SharePoint Web 应用程序)后。 以下数据库不具有自动维护机制。 这是因为未料到这些数据库会出现大量碎片化情况。 监视这些数据库的碎片化水平,并当碎片化水平超过 30% 时在这些数据库中重新生成索引。

搜索管理数据库 安全存储数据库 State Service 数据库 配置文件同步数据库

© 2011 Microsoft Corporation。保留所有权利。 页 | 12若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 13: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

使用率数据库 托管元数据数据库 Business Connectivity Services 数据库 PerformancePoint Services 数据库

有关 SharePoint 2010 数据库支持的更改的详细信息,请参阅 Microsoft 知识库中的对 Office 服务 器产品和 Windows SharePoint Services 使用的数据库的更改的支持 (http://go.microsoft.com/fwlink/?LinkId=110844&clcid=0x409)。 如果通过频繁的碎片整理并未适度改进碎片化程度很大的数据库或表的性能,则应检查 I/O 子系统的性能。 降低特定表及其索引的碎片化水平如果您希望对与特定表而非整个数据库关联的索引进行碎片整理,则可以重新组织或重新生成该索引。 重新组织某个索引将指定重新组织该索引的叶级别。 索引重新组织将对表和视图中的聚集和非聚集索引进行碎片整理和压缩,从而大大提高索引扫描性能。 重新组织某个索引将利用分配给该索引的现有空间。 重新组织始终以联机方式执行,以便基础表对用户可用。

重新生成索引将指定重新生成该索引的全新副本。 这意味着,在删除旧的碎片索引之前,重新生成操作需要足够的额外空间才能生成索引的新副本。 重新生成可提高索引扫描和搜索的性能。 您可以联机或脱机方式重新生成表的索引。

索引的碎片化水平将确定应对其使用的碎片整理方法,以及索引是应保持联机还是应脱机。 下表介绍了针对不同的碎片化水平建议的碎片整理方法。 碎片化水平 碎片整理方法最多 10% 重新组织(联机)10-75% 重新生成(联机)75% 重新生成(脱机)注意:无法在 SharePoint 2010 数据库中使用 DROP INDEX 和 CREATE INDEX 命令。 您可以使用 SQL Server 2008 或 SQL Server 2005 ALTER INDEX 语句,或使用 SQL Server

2008 或 SQL Server 2005 维护计划向导来重新组织和重新生成索引。 本白皮书仅详细介绍 SQL

Server 2008 或 SQL Server 2005 选项。 使用 ALTER INDEXALTER INDEX 允许数据库管理员对表或视图上的索引执行维护操作。 该语句可用于禁用、重新生成和重新组织索引。 (可选)它可用于设置索引的选项。 在大多数情况下,您可以在数据库处于联机状态时重新生成索引,这可使数据比脱机索引重新生成的可用性更高。 重要说明:SQL Server 2000 支持使用 DBCC DBREINDEX 和 DBCC INDEXDEFRAG 进行索引维护。 自 SQL Server 2005 开始的版本中已弃用这些命令,并将从 SQL Server 的将来版本中删除这些命令。 请不要使用这些命令对 SharePoint 2010 数据库进行索引维护。 © 2011 Microsoft Corporation。保留所有权利。 页 | 13若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 14: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

注意: 在以脱机方式重新生成索引时,将对表进行共享表锁定,从而阻止执行除 SELECT 操作之外的任何操作。 SharePoint 2010 数据库专门使用了聚集索引。 在以脱机方式重新生成聚集索引时,将对表进行排他表锁定,从而阻止最终用户对表进行任何访问。 您可以自定义以下示例脚本来重新生成表上的所有索引。 USE Contoso_Content_1

GO

ALTER INDEX ALL ON [database_name. [ schema_name ] . | schema_name. ]table_or_view_name

REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,

STATISTICS_NORECOMPUTE = ON)

GO

通过设置填充因子对索引性能进行微调填充因子可用于进一步改进索引数据存储和性能。 在创建或重新生成索引时,填充因子值 (1-100) 将确定可用数据填充的每个叶级别页上的空间百分比。 剩余空间将保留以适合将来增长。 很多情况下,默认服务器范围的填充因子水平为 0 是最佳的(这意味着,将 100% 填满每个页面)。 但对于 SharePoint 2010 来说,服务器范围设置为 80 时对于支持数据增长并最大程度地降低碎片化水平是最合适的。 注意: 建议您不要为单个表或索引设置填充因子。 虽然这是非 SharePoint SQL Server 数据库的首选方法,但测试表明,SharePoint 数据库在具有 80% 的填充因子时的工作性能最佳。 若要查看一个或多个索引的填充因子值,请查询 sys.indexes 目录视图。 有关该视图的详细信息,请参阅 sys.indexes (Transact-SQL) (http://go.microsoft.com/fwlink/?LinkId=110850&clcid=0x409)。 若要配置服务器范围的填充因子值,请使用 sp_configure 系统存储过程。 有关详细信息,请参阅 spconfigure (Transact-SQL) (http://go.microsoft.com/fwlink/?LinkId=110851&clcid=0x409)。 压缩数据文件在 SQL Server 2008 和 SQL Server 2005 中,您可以压缩数据库中的每个文件(扩展名为 .mdf、.ldf 和 .ndf)以删除未使用的页并恢复磁盘空间。 SharePoint 2010 数据库不会自动压缩数据文件,但很多活动会在数据库中生成未使用的空间。 可生成未使用的空间的活动包括运行 Move-SPSite (http://technet.microsoft.com/en-us/library/ff607915.aspx) Windows PowerShell 命令以及删除文档、文档库、列表、列表项和网站。

图 3. 数据库分配只能从文件的末尾释放可用空间 - 例如,一个指定目标大小为 40 GB 的 60 GB 的内容数据库文件将尽可能多地从其 20 GB 末尾内容(从概念上说,位于“右”端)中释放空间。 如果使用的页包© 2011 Microsoft Corporation。保留所有权利。 页 | 14若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 15: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

含在文件末尾的 20 GB 内容中,则这些页随后会重新定位到文件的保留的 40 GB 开头内容中。 您可以单个压缩或以组的形式压缩数据库文件。 应尽量少地执行压缩操作,并且应仅在执行从数据库删除大量数据的操作后执行,或仅在预计不再使用可用空间时执行。 数据文件压缩操作会导致索引碎片化程度较大并耗费大量资源。 举例来说,在将大量网站集从一个内容数据库重新定位到另一个内容数据库或删除大型列表时,压缩数据库数据文件也许是可以接受的,因为这两种情况均会产生大量的未使用空间。 只能将数据库文件减小到无剩余可用空间的程度。 因此,对于一个内容很少被删除的内容数据库而言,通过压缩获得的好处可能会很少,并且当它需要增大以容纳额外数据(由于没有特定的容纳空间)时,性能还可能会受到影响。 有关详细信息,请参阅数据库文件初始化 (http://msdn.microsoft.com/en-us/library/ms175935.aspx)。 由于压缩会导致索引碎片化,因此绝不应定期压缩数据库文件;只应在为了响应因显著影响数据库中的相对可用空间量的操作导致出现大量未使用的空间时压缩数据库。 如有可能,应避免压缩数据库。 压缩数据库时,请遵循以下准则: 不要自动压缩数据库或配置以编程方式压缩数据库的维护计划。 仅当用户或管理员执行的删除操作删除了数据库中不少于 50% 的内容,并且您预计未使用的空间不会被更多数据重用时,才压缩数据库。

建议您只压缩内容数据库。 通常不会对配置数据库、管理中心内容数据库和各种服务应用程序数据库执行足够的删除以包含大量可用空间。

压缩数据库是一项极耗资源的操作。 因此,如果您必须压缩数据库,请在计划压缩操作时仔细考虑。

在对一个数据库执行压缩操作后,该数据库中的索引现已碎化。 可以使用 ALTER INDEX...

REORGANIZE 处理此碎片化。 如果未配置为允许即时文件初始化,则应将数据库压缩到可容纳近期的预计增长所需的空间的目标大小。 有关详细信息,请参阅数据库文件初始化 (http://msdn.microsoft.com/en-us/library/ms175935.aspx)。 如果您通过重新生成索引来删除碎片,则将导致数据库再次增大,并留下未使用的空间。

可以使用 SQL Server 2008 Management Studio 或 SQL Server 2005 Management Studio 通过执行 DBCC SHRINKFILE 和 DBCC SHRINKDATABASE 语句来手动压缩数据库和数据库文件以恢复空间。 有关压缩数据库会对其性能产生不利影响的原因以及仅在绝对必要时才应执行此操作的原因的详细信息,请参阅不应压缩数据文件的原因(可能为英文网页) (http://www.sqlskills.com/BLOGS/PAUL/post/Why-you-should-not-shrink-your-data-files.aspx)。 使用 Transact-SQL 命令压缩数据库DBCC SHRINKDATABASE 可压缩特定数据库的数据和日志文件。 若要压缩单个文件,请使用 DBCC SHRINKFILE。 © 2011 Microsoft Corporation。保留所有权利。 页 | 15若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 16: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

DBCC SHRINKDATABASE语法:

DBCC SHRINKDATABASE

( 'database_name' | database_id | 0

[ ,target_percent ]

[ , { NOTRUNCATE | TRUNCATEONLY } ]

)

[ WITH NO_INFOMSGS ]

database_name | database_id | 0 指定数据库名称或 ID。 若要选择当前数据库,请使用 0。 target_percent 是您希望在压缩数据库后保留的可用空间的百分比。 NOTRUNCATE 用于通过将文件结尾处的已分配页移动到文件开头处的未分配页来压缩数据文件中的数据。 TRUNCATEONLY 用于将文件结尾处的所有可用空间释放到操作系统但不在该文件内执行任何页移动操作。 注意:无法在 SharePoint 2010 内容数据库中使用 TRUNCATEONLY 选项。 有关详细信息,请参阅 DBCC SHRINKDATABASE (Transact-SQL) (http://go.microsoft.com/fwlink/?LinkId=110852&clcid=0x409)。 DBCC SHRINKFILE语法:

DBCC SHRINKFILE

(

     { 'file_name' | file_id }

    { [ , EMPTYFILE ]

    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]

    }

)

[ WITH NO_INFOMSGS ]

file_name | file_id 指定文件名或 ID。 EMPTYFILE 用于将指定文件中的所有数据迁移到同一文件组中的其他文件。 注意:无法在 SharePoint 2010 数据库文件中使用 EMPTYFILE 选项。 target_size 是文件的目标大小(以 MB 为单位,并以整数表示)。 © 2011 Microsoft Corporation。保留所有权利。 页 | 16若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 17: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

NOTRUNCATE 用于通过将文件结尾处的已分配页移动到文件开头处的未分配页来压缩数据文件中的数据。 TRUNCATEONLY 用于将文件结尾处的所有可用空间释放到操作系统但不在该文件内执行任何页移动操作。 注意:无法在 SharePoint 2010 内容数据库中使用 TRUNCATEONLY 选项。 有关详细信息,请参阅 DBCC SHRINKFILE (Transact-SQL) (http://go.microsoft.com/fwlink/?LinkId=110853&clcid=0x409)。 使用 SQL Server 2008 Management Studio 压缩数据库1. 在任务栏上,单击“开始”,依次指向“所有程序”和“Microsoft SQL Server 2008”,然后单击“SQL Server Management Studio”。

2. 在对象资源管理器中,连接到一个 SQL Server 2008 数据库引擎实例,然后展开该实例。 3. 展开“数据库”,右键单击要压缩的数据库,依次指向“任务”和“压缩”,然后单击“文

件”。 4. 选择文件类型和文件名。 5. 选择“在释放未使用的空间前重新组织文件”。 您还必须设置“将文件收缩到”值。 选择此选项将导致文件中任何未使用的空间被释放到操作系统中,并会尝试将行重新定位到未分配的页中。

6. 单击“确定”。 创建 SQL Server 2008 维护计划本白皮书中涵盖的很多维护操作都可以通过实现 SQL Server 维护计划来以编程方式执行。 维护计划可以自动完成和按计划完成基本任务以保护您的数据。 通过在 SQL Server 2008 或 SQL Server 2005 中使用维护计划,管理员可以安排这样的操作,如运行数据库一致性检查以及重新组织或重新生成索引。 有关详细信息,请参阅以下资源: 针对 SQL Server 2008 的维护计划向导(http://go.microsoft.com/fwlink/?LinkId=110855&clcid=

0x409) 针对 SQL Server 2005 的数据库维护计划向导 (http://go.microsoft.com/fwlink/?

LinkId=217494)

配置 SQL Server 2008 数据库维护计划1. 在任务栏上,单击“开始”,依次指向“所有程序”和“Microsoft SQL Server 2008”,然

后单击“SQL Server Management Studio”。 2. 在对象资源管理器中,连接到一个 SQL Server 2008 数据库引擎实例,然后展开该实例。 3. 单击“管理”,右键单击“维护计划”,然后单击“维护计划向导”。 4. 连续单击“下一步”,直到显示“选择计划属性”页。

© 2011 Microsoft Corporation。保留所有权利。 页 | 17若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 18: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

5. 在“名称”和“说明”字段中,键入名称和说明。 6. 确定是配置一个还是多个维护计划。

若要配置一个维护计划,请选择“整个计划统筹安排或无计划”。 若要配置包含特定任务的多个维护计划,请选择“每项任务单独计划”。 如果您的环境中有 10 个或更多内容数据库或有 200 GB 以上的内容,则建议您配置单独的维护计划以提供适当的特征并最大化维护窗口。 如果您为一个数据库配置多个维护计划,请分别为这些计划指定一个名称或说明以区分这些计划及其用途(包括其时间表)。

7. 单击“更改”以更高一个或多个计划的时间表。 这将显示“作业计划属性”对话框。

© 2011 Microsoft Corporation。保留所有权利。 页 | 18若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 19: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

8. 填写此时间表,单击“确定”,然后单击“下一步”。

© 2011 Microsoft Corporation。保留所有权利。 页 | 19若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 20: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

9. 在“选择维护任务”页上,选择要包含在计划中的维护任务,然后单击“下一步”。

注意: 一个维护计划应只包括索引重新组织或索引重新生成,而非同时包含两者。 维护计划绝不应包括压缩数据库。 若要确定每个任务的持续时间,请在将所有任务合并成一个计划前单独测试每个任务。 您

可能需要为单独的时间表定义多个维护计划,以使任务能够在不对最终用户操作产生负面影响的情况下完成。

维护清除任务将删除执行维护计划后留下的文件。

© 2011 Microsoft Corporation。保留所有权利。 页 | 20若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 21: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

10. 在“选择维护任务顺序”页上,更改维护计划任务的顺序(如果需要)。 选择一个任务,然后单击“上移”或“下移”。 在正确排列任务后,单击“下一步”。 注意:如果您的数据库非常大,则可能需要创建单独的维护计划,按照低于索引维护频率的频率检查数据库的完整性。

接下来,此向导将指导您完成每个任务的详细信息的设置。

© 2011 Microsoft Corporation。保留所有权利。 页 | 21若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 22: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

11. 在“定义‘数据库完整性检查’任务”页上,选择要检查其完整性的数据库,然后单击“下一步”。 注意:您可以安全地检查所有 SharePoint 2010 数据库的完整性。

12. 在“定义‘重新组织索引’任务”页上的“数据库”列表中,指定要重新组织其索引的数据库,选中“压缩大型对象”复选框,然后单击“下一步”。

© 2011 Microsoft Corporation。保留所有权利。 页 | 22若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 23: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

13. 如果您已选择重新生成索引而不是重新组织索引,则在“定义‘重新生成索引’任务”页上的“数据库”列表中,指定要重新生成其索引的数据库。

14. 选择“将每页的可用空间百分比更改为”,键入 80,然后单击“下一步”。 更改每页的可用空间的百分比将设置数据库的填充因子。

© 2011 Microsoft Corporation。保留所有权利。 页 | 23若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 24: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

15. 在“定义‘维护清除’任务”页上,按需设置值,然后单击“下一步”。 建议您删除“维护计划”文本报告。

© 2011 Microsoft Corporation。保留所有权利。 页 | 24若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。

Page 25: 摘要 - download.microsoft.comdownload.microsoft.com/.../DatabaseMaintenanceShareP…  · Web viewMicrosoft SharePoint 2010 2011 年 7 月. Microsoft SharePoint 2010 2011 年 7

Microsoft SharePoint 2010 2011 年 7 月

16. 在“选择报告选项”页上,选择“将报告写入文本文件”,指定文件的位置,然后连续单击“下一步”直到向导完成。

小结无论您选择使用哪种方法,持续维护承载 SharePoint 2010 的数据库都将显著改善系统的运行状况和性能。 先确保您已拥有所有数据库的可靠备份,然后再实施维护操作和维护计划。 在实施持续运行的维护操作或维护计划之前,请测试这些操作对系统产生的影响以及运行它们所需的时间。 尽可能将所有维护操作或维护计划设置为在非工作时间运行,以便最大程度地减小对用户产生的性能影响。

© 2011 Microsoft Corporation。保留所有权利。 页 | 25若要对本白皮书内容发表评论或请求关于这些功能的更多文档,请与 SharePoint IT Docs ([email protected]) 联系。