科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server 2005 数据维护实务

SQL Server 2005 数据维护实务

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

为了使SQL Server数据库的性能保持在最佳的状态,数据库管理员应该对每一个数据库进行定期的常规维护。这些常规任务包括重建数据库索引、检查数据库完整性,更新索引统计信息,数据库内部一致性检查和备份等……

作者:cyw 来源:IT专家网 2007年11月26日

关键字: SQL Server

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

3.4 重新生成索引任务

  重新生成索引任务(Rebuild Index Task)旨在通过重新组织数据库中所有的表索引而清除碎片。此任务对于确保查询性能和应用程序响应不会退化非常有用。因此,当需要对SQL执行索引扫描和查找的时候,系统运行会非常顺畅。另外,此任务能够优化数据和可用空间的再索引页的分配,使数据库增长更加快速。

  对于可用空间,重新生成索引任务包含以下两个选项:

  采用默认可用空间大小来重新组织索引页——删除数据库里的表索引,并重新生成索引,生成索引的同时就指定填充因子(fill factor)的值。

  改变每个索引页的可用空间比例——删除数据库里的表索引,并指定一个自动计算得到的新填充因子值来重新生成索引,因此能够保留索引页上指定的有用空间大小。填充因子的有效值范围从0到100,数值越大,索引页上保留的有用空间就越多,索引就可以增长得越大。

  重新生成索引的高级选项包括:

  指定是否在tempdb中存储排序结果——这是重新生成索引的第一个高级选项,相当于索引中的SORT_IN_TEMPDB选项,如果激活这个选项,那么中间排序结果将会在重新生成索引的过程中存储到tempdb中。

  指定重新生成索引操作中是否保持索引联机——如果设置值为ON,那么这个选项允许用户在重新生成索引操作过程中对基础表、聚集索引数据和相关联的索引进行查询和数据修改操作。

  为了更深入了解这个任务,下面举一个TSQL语法实例用来重新生成与AdventureWorks 数据库中的[Sales]. [SalesOrderDetail]表关联的索引,例子中采用默认可用空间大小选项,同时将排序结果存储在tempdb中,并在操作过程中保持索引联机:

  USE [AdventureWorks]
  GO
  ALTER INDEX [AK_SalesOrderDetail_rowguid]
  ON [Sales].[SalesOrderDetail]
  REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, ONLINE = ON )
  GO
  USE [AdventureWorks]
  GO
  ALTER INDEX [IX_SalesOrderDetail_ProductID]
  ON [Sales].[SalesOrderDetail]
  REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, ONLINE = ON )
  GO
  USE [AdventureWorks]
  GO
  ALTER INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID]
  ON [Sales].[SalesOrderDetail]
  REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = ON, ONLINE = ON )

  3.5 更新统计信息任务

  更新统计信息任务(pdate Statistics Task)通过对用户表创建的每个索引统计信息分布进行重新抽样,以确保在一个或多个SQL Server数据库内表和索引中的数据都是最新的。

  此任务的选项有很多,下面为您一一介绍:

  数据库——首先选择受此任务影响的数据库。这个选项范围包括所有数据库、所有系统数据库、所有用户数据库或指定数据库。

  对象——选择完数据库后,就该在对象框中选择限定显示表、显示视图还是两者同时显示。

  选择——选择受此任务影响的表或索引。如果在对象框中选择了同时显示表和视图选项的话,此选项不可用。

  更新——“更新”框提供了三个选项。如果需要更新列和索引的统计信息那就选择全部现有统计信息,如果只需要更新列统计信息那就选择仅限列统计信息,如果只更新索引统计信息那就选择仅限索引统计信息。

  扫描类型——此选项使用户可以对收集已更新统计信息进行完全扫描或通过在抽样选项键入特定值进行扫描。抽样选项的值可以是要抽样的表或索引视图的百分比,也可以是指定的行数。

  下面是用来更新AdventureWorks 数据库中的[Sales]. [SalesOrderDetail]表的索引统计信息的TSQL语法,例子中选择更新全部现有信息,并执行完全扫描:

  use [AdventureWorks]
  GO
  UPDATE STATISTICS [Sales].[SalesOrderDetail]
  WITH FULLSCAN

  3.6 清除历史记录任务

  清除历史记录任务(History Cleanup Task)用几个简单的步骤就可以完全清除数据库表中旧的历史信息。任务支持删除多种类型的数据。下面介绍与此任务相关的几个选项:

  即将删除的历史数据——使用维护计划向导来清除备份和还原历史记录,SQL Server代理作业历史记录和维护计划历史记录。

  移除历史数据,如果其保留时间超过——同样是通过维护计划向导实现,用于指定需要删除的数据所保留的最早日期。例如您可以选择以天数、周数、月数或年数为单位作为间隔周期来删除旧数据,系统将自动将该间隔单位转换为日期。

  当清除历史记录任务完成后,点击“下一步”,调用“选择报告选项”界面,激活检查框中的将报告写入文本文档选项,然后选择保存路径就可以选择将结果报告保存到一个文本文档或用电子邮件发送这份报告给操作人员。

  下面的TSQL实例显示如何清除保留了超过四星期的备份和还原历史、SQL Server代理作业历史以及维护计划历史等数据:

  declare @dt datetime select @dt = cast(N'2007-10-21T09:26:24' as datetime)
  exec msdb.dbo.sp_delete_backuphistory @dt
  GO
  EXEC msdb.dbo.sp_purge_jobhistory @oldest_date='2007-10-21T09:26:24'
  GO
  EXECUTE msdb..sp_maintplan_delete_log null, null,'2007-10-21T09:26:24'

  3.7 执行SQL Server代理作业任务

  执行SQL Server代理作业任务(Execute SQL Server Agent Job task)可以让您把运行已有的SQL Server代理作业和SSIS程序包作为维护计划的一部分。通过在“定义执行SQL Server代理作业任务”界面的可用SQL Server代理作业选项卡选择完成这项任务。同样,也可以通过TSQL语法来通过输入与已有的作业相应的作业ID来执行这项任务。

  执行此任务的语法如下:

  EXEC msdb.dbo.sp_start_job @job_id=N'35eca119-28a6-4a29-994b-0680ce73f1f3'

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章