我使用FILESTREAM在我的客户端服务器应用程序中存储BLOBS。
过去我不时通过执行如下命令清除所有BLOBS:
UPDATE BLOBTABLE set BLOBFIELD = NULL
这清除了blob,我这样做是为了使数据库备份更小。
但要让blob"从磁盘中消失"然后我需要运行
CHECKPOINT
注意:这是作为DBA活动完成的,而不是作为软件的一部分。
现在我意识到在我的应用程序中,我从不打电话给CHECKPOINT
。
我应该每次删除一个blob,我应该吗?
为了更好地超越自我,我举一个真实案例的例子:
我的应用程序允许存储文件(如pdf文档)。
这些pdf在文件流字段中保存为blob。
当用户(从ui)删除它们时,我运行
DELETE
命令。之后我没有调用CEHCKPOINT,所以垃圾收集没有 运行
考虑到这一点,我意识到我没有完全控制住。
所以我的问题很简单:每次删除其中一个文件时,我是否需要运行CHECKPOINT
?这样做有什么缺点吗?
谢谢!
答案 0 :(得分:1)
数据库在不同时刻执行检查点,其中一个是执行备份时。
由于检查点会触发垃圾回收,因此不需要(异常可能是巨大的或复杂的情况)在应用程序中调用CHECKPOINT
,因为风险是降低性能。
如果需要,最好决定使用CHECKPOINT
作为维护活动,但请记住,数据库备份(甚至停止sql服务)会产生检查点。