Можно ли обрезать файл LOG во время повторного заполнения полнотекстового индекса? - PullRequest
0 голосов
/ 03 ноября 2018

Простой вопрос ...

В рамках процедуры обслуживания базы данных мы иногда полностью удаляем и перестраиваем полнотекстовый индекс и его основной кластеризованный индекс.

Это работает довольно хорошо, и с ним нет проблем, кроме ОДНОЙ вещи: После того, как мы заново создали кластеризованный индекс, мы выполняем инструкцию для повторного создания полнотекстового индекса:

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

Опять же, это прекрасно работает, и на это уходит несколько часов, что также прекрасно, так как это делается во время простоя и не влияет на пользователей. Но есть одна маленькая вещь, которая раздражает меня. Пока полнотекстовый индекс заполняется, то есть:

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

возвращает 1, файл LOG продолжает расти и расти, до 110 ГБ. После этого мы просто усекаем его, и пользователи переносят его на следующий день.

Так что вопрос такой: Будет ли уместно иногда обрезать файл LOG в течение нескольких часов, пока Populatestatus возвращает 1, чтобы мы сохраняли размер файла LOG на управляемом уровне?

1 Ответ

0 голосов
/ 03 ноября 2018

Это прекрасно, но это может не выпустить журнал, использованный для перестройки индекса. Другими словами, усечение журнала не может уменьшить его размер, пока индекс не заполнится.

Удаление такого огромного количества данных и его повторная сборка всегда потребляют ресурсы ввода-вывода и журнала. Если вы попытаетесь избежать удаления / повторного заполнения вашей кластеризованной таблицы, это значительно замедлит рост журнала. В этом случае вам также не нужно будет заново создавать полнотекстовый индекс.

...