我使用 FILESTREAM 将 BLOBS 存储在我的客户端服务器应用程序中。
过去,我有时会通过执行以下命令来清除所有 BLOBS:
UPDATE BLOBTABLE set BLOBFIELD = NULL
这清除了 blob,我这样做是为了使数据库备份更小。
但是为了使blob“从磁盘上消失”,我需要运行
CHECKPOINT
注意:这是作为 DBA 活动完成的,而不是作为软件的一部分。
现在我意识到在我的应用程序中我从不调用CHECKPOINT
.
也许我应该每次删除一个blob,我应该吗?
为了更好地表达我的自我,我举了一个我真实案例的例子:
我的应用程序允许存储文件(如 pdf 文档)。
这些 pdf 保存为文件流字段中的 blob。
当用户(从用户界面)删除它们时,我运行一个
DELETE
命令。我没有在它之后调用 CEHCKPOINT,所以垃圾收集不会运行。
考虑到这一点,我意识到我没有完全掌控一切。
所以我的问题很简单:CHECKPOINT
每次删除其中一个文件时是否需要运行?这样做有什么缺点吗?
谢谢!