科技行者

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

知识库

知识库 安全导航

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

SQL Server 2005 数据维护实务

  • 扫一扫
    分享文章到微信

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

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

来源:天新网 2008年3月25日

关键字: Mssql SQL SQL Server 数据库

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

    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

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

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

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