Я использую FILESTREAM для хранения BLOBS в моем клиентском серверном приложении.Как эффективно использовать CHECKPOINT в приложении, использующем FILESTREAM
В прошлом я был время от времени, чтобы очистить все BLOBS, выполнив команду типа:
UPDATE BLOBTABLE set BLOBFIELD = NULL
Это очищает пятна, я сделал это, чтобы сделать резервную копию БД меньше.
Но сделать сгустки «исчезают с диска» я тогда нужно запустить
CHECKPOINT
Примечание: это было сделано в качестве DBA деятельности, а не как часть программного обеспечения.
Теперь я понимаю, что в своем приложении я никогда не звоню CHECKPOINT
.
Может быть, я должен каждый раз, когда я удаляю blob, должен ли я?
Просто experss мой сам лучше я сделать пример моего реального случая:
Мое приложение позволяет хранить файлы (например, документы в формате PDF).
эти pdf сохраняются как капли в поле фильтра.
Поскольку пользователь удаляет их (из ui), я запускаю команду
DELETE
.Я не называю CEHCKPOINT после этого, поэтому сбор мусора не пробег.
Рассматривая это, я понимаю, что у меня нет полной вещи под контролем.
Так что мой вопрос просто: мне нужно запускать CHECKPOINT
каждый раз, когда я удаляю один из этих файлов? есть ли недостаток в этом?
Спасибо!
Данные FILESTREAM хранятся в папке (по конструкции сервера sql). Если я добавлю blob в свое приложение, я вижу, что количество файлов в папке увеличивается на 3. Если я удалю файл, я ожидаю вернуться к -3. – LaBracca
Если это умеренно активная база данных, в любом случае она должна быть автоматически проверена. И если вы не голодали на дисковое пространство (в этом случае, вместо того, чтобы тратить время на размышления об этом, идите и получите больше места на диске), вы должны просто доверять системе, чтобы в конечном итоге удалить ненужные файлы. Попытка заставить его, как правило, приводит к снижению общей производительности. –
@Damien_The_Unbeliever вы имеете в виду, что сборщик мусора в любом случае работает время от времени, даже если он не вызывается вручную с помощью CHECKPOINT? – LaBracca