2

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

过去,我有时会通过执行以下命令来清除所有 BLOBS:

UPDATE BLOBTABLE set BLOBFIELD = NULL

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

但是为了使blob“从磁盘上消失”,我需要运行

CHECKPOINT

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

现在我意识到在我的应用程序中我从不调用CHECKPOINT.

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

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

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

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

当用户(从用户界面)删除它们时,我运行一个DELETE命令。

我没有在它之后调用 CEHCKPOINT,所以垃圾收集不会运行。

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

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

谢谢!

4

1 回答 1

1

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

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

如果需要,最好决定将其CHECKPOINT用作维护活动,但请记住,数据库备份(甚至停止 sql 服务)有一个检查点。

于 2014-10-08T14:03:49.680 回答