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