如何在使用FILE STREAM的应用程序中有效地使用CHECKPOINT

时间:2014-10-06 07:43:25

标签: sql-server sql-server-2008-r2 blobstorage checkpoint

我使用FILESTREAM在我的客户端服务器应用程序中存储BLOBS。

过去我不时通过执行如下命令清除所有BLOBS:

UPDATE BLOBTABLE set BLOBFIELD = NULL

这清除了blob,我这样做是为了使数据库备份更小。

但要让blob"从磁盘中消失"然后我需要运行

CHECKPOINT

注意:这是作为DBA活动完成的,而不是作为软件的一部分。

现在我意识到在我的应用程序中,我从不打电话给CHECKPOINT

我应该每次删除一个blob,我应该吗?

为了更好地超越自我,我举一个真实案例的例子:

  

我的应用程序允许存储文件(如pdf文档)。

     

这些pdf在文件流字段中保存为blob。

     

当用户(从ui)删除它们时,我运行DELETE命令。

     

之后我没有调用CEHCKPOINT,所以垃圾收集没有   运行

考虑到这一点,我意识到我没有完全控制住。

所以我的问题很简单:每次删除其中一个文件时,我是否需要运行CHECKPOINT?这样做有什么缺点吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

数据库在不同时刻执行检查点,其中一个是执行备份时。

由于检查点会触发垃圾回收,因此不需要(异常可能是巨大的或复杂的情况)在应用程序中调用CHECKPOINT,因为风险是降低性能。

如果需要,最好决定使用CHECKPOINT作为维护活动,但请记住,数据库备份(甚至停止sql服务)会产生检查点。