技术开发 频道

SQL 问题与解答:维护日志和索引

    【IT168 评论】切勿破坏这个结构链

  问:我已经为数据库定义了备份策略。 我的计划涉及事务日志备份,这样我们执行灾难恢复时几乎不会丢失数据。 我研究了可能会遇到的一些问题,并几次读到需要注意不能破坏日志备份链。 您能解释一下这是什么意思以及在何种情况下会破坏它吗?

  答:问得好,许多人都忽略了这个问题。 日志备份链(有时简称为日志链)指的是一系列不间断的事务日志备份,覆盖的时间段从最近的数据备份(完整备份或差异备份)到要还原该备份时。 还原序列的示例如下:

  · 最近的完整数据库备份

  · 然后是最近的差异数据库备份

  · 最后是所有事务日志备份

  大多数人会保留更多事务日志备份,一旦某个备份被破坏,您必须还原最近的数据备份。 在我去年撰写的两篇《TechNet 杂志》文章“了解 SQL Server 备份”和“利用备份进行灾难恢复”中,可获得有关备份和还原的更多信息。

  如果任何必要的日志备份被损坏或不能按照所选序列还原,则日志备份链会被破坏并且无法还原被破坏的时间之前的备份。 如果只损坏了其中一个日志备份,您可能会使用 WITH CONTINUE_AFTER_ERROR 选项强制其进行还原。 这会强制还原已损坏的事务日志记录,从而导致数据库损坏。 我对是否强制进行此类还原也拿不定主意。

  可能会导致必要的日志备份不可用的一项操作是“带外”日志备份,该操作不能确保会保留日志备份。 例如,您可能通过这种方式向开发人员提供副本。 该日志备份是日志备份链的一部分,因为它是唯一包含在前一个日志备份后生成的日志记录的日志备份。

  也就是说,除非您使用 WITH COPY_ONLY 选项执行日志备份,并允许下一个 日志备份有效地备份同一组日志记录才行。 请参见我的博客文章“BACKUP WITH COPY_ONLY”,了解有关如何避免损坏备份链的详细信息。

  损坏日志备份链的操作的一个更常见示例是阻止您在日常操作期间执行事务日志备份。 这些类型的操作包括:

  · 切换到 SIMPLE 恢复模式,然后返回 FULL 或 BULK_LOGGED

  · 使用 BACKUP LOG … WITH NO_LOG 或 TRUNCATE_ONLY 选项将日志转储到 SQL Server 2005 和早期版本中

  · 从数据库快照还原数据库

  您需要在上述任何操作后执行数据备份(完整备份或差异备份)以允许日志备份继续。 这称为“重新启动日志备份链”。

  最后一件事:与一般认识相反,执行完整备份或差异备份不会 损坏日志备份链,事实上,不会对日志备份产生任何影响。

  群集这些索引

  问:SQL Server 2008 数据库中的许多表不包含群集索引。 我听说使用导致额外 IO 的前推记录时,可能遇到性能问题。 您是否能告诉我如何检查此问题以及应该采取什么措施?

  答:堆是一个不包含群集索引的表。 它在本质上是无序的。 不了解堆中的前推记录及其用法的读者,请参见我的博客文章“转发和前推记录以及后向指针大小”了解详细信息。 在查询处理期间,堆中的前推记录可能会导致额外的随机 IO 操作,而这会导致性能下降。

  检查您的查询是否正在处理前推记录的最简便方法是查看访问方法性能对象中的每秒前推记录性能计数器。 然后,对数据库中的一些表使用带有 DETAILED 模式的 sys.dm_db_index_physical_stats 动态管理函数,该函数将在输出的 forwarded_record_count 列中返回每个表的前推记录数。 有关详细信息,请参阅联机丛书中的此主题。

  删除前推记录的最糟糕的方法是创建群集索引,然后再删除该索引。 这会导致表中的所有非群集索引自动重新生成两次,浪费大量资源。 有关详细信息,请参阅我的博客文章:“表结构更改时,非群集索引会怎样?”

  永久删除和阻止堆中的前推记录的最简便方法是创建群集索引。 在此,我不希望讨论为什么在大多数情况下应当使用群集索引而不是堆,从而陷入“群集索引与堆”的争论 。 有关此问题的详细信息,请参阅我妻子 Kimberly Tripp 的“群集键”博客文章系列。 我鼓励您使用群集索引进行评估。

  表记录大小增加时,如果空间不足,会引起前推记录。 因此,阻止前推记录的另一个方法是防止更改记录大小。 例如,这意味着使用可变长度列的默认值。

  在 SQL Server 2008 中,有一个新的 ALTER TABLE … REBUILD 语句允许您重新生成堆。 此语句的工作原理与允许您重新生成索引的 ALTER INDEX … REBUILD 语句的工作原理相同。 Microsoft 添加此语句是为了支持数据压缩功能,但这里我们将其用于其他目的。 有关详细信息,请参阅联机丛书中的此主题。

点击查看更多TechNet精彩文章

0
相关文章