首页 > 解决方案 > 在全文索引重新填充期间是否可以截断 LOG 文件?

问题描述

一个简单的问题...

作为数据库维护例程的一部分,我们偶尔会完全删除和重建全文索引及其基础聚集索引。

这工作得很好,没有任何问题,除了一件事情:在我们重新创建聚集索引之后,我们执行一个语句来重新创建全文索引:

CREATE FULLTEXT INDEX ON [dbo].[<ourtablename>] (<thefieldswewanttoindex>) KEY INDEX [<theclusteredindex>] ON [<thefulltextcatalog>] WITH CHANGE_TRACKING AUTO

同样,这工作得很好,需要几个小时才能完成,这也很好,因为这是在停机期间完成的,不会影响任何用户。但是有一件小事让我很恼火。当全文索引重新填充时,即:

SELECT FULLTEXTCATALOGPROPERTY('<thefulltextcatalog>', 'Populatestatus')

返回1,LOG文件不断增长,最大到110GB。之后我们只是截断它,用户在第二天继续。

所以问题是: 在 Populatestatus 返回 1 时偶尔截断 LOG 文件是否可以,以便我们将 LOG 文件大小保持在可管理的水平?

标签: sql-serverloggingsql-tuning

解决方案


这样做完全没问题,但是这可能不会释放用于重建索引的日志。换句话说,在填充索引之前,截断日志可能不会减小其大小。

这么大的数据量删除再重建总是会消耗IO和日志资源。如果您尝试避免删除/重新填充聚簇表,这将显着减少日志增长。在这种情况下,您也不需要重新创建全文索引。


推荐阅读