首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server sp_clean_db_free_space

Server sp_clean_db_free_space
EN

Stack Overflow用户
提问于 2017-03-21 00:20:43
回答 1查看 2.7K关注 0票数 0

我只想问一下,我是否可以使用存储过程sp_clean_db_free_space作为预防性维护的一部分?

这个内置在存储过程中的优点和缺点是什么?我只想听听已经用过这个的人的意见。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 06:21:01

除非您有特定的原因,否则通常不需要显式地运行它。

引用Server联机丛书的sp_clean_db_free_space

从表中删除操作或更新导致行移动的操作可以通过删除对行的引用而立即释放页面上的空间。但是,在某些情况下,行实际上可以作为鬼记录保留在数据页上。幽灵记录由后台进程定期删除。数据库引擎在响应查询时不会返回此剩余数据。但是,在数据或备份文件的物理安全性受到威胁的环境中,可以使用sp_clean_db_free_space清除这些鬼记录。

注意,Server已经有了一个后台进程来实现与sp_clean_db_free_space相同的结果。

您可能希望显式运行sp_clean_db_free_space的唯一原因是,是否存在潜在数据库文件或备份可能被破坏和分析的风险。在这种情况下,任何尚未被背景过程清除的数据都可以公开。当然,如果您的系统以这种方式被破坏,您可能也有更大的问题在您的手上!

另一个原因可能是您有一个时间限制需求,即删除的数据不应以任何可读的形式保留。如果您只有一个没有时间限制的一般要求,那么等待常规后台进程自动执行这一点是可以接受的。

同一页还提到:

由于运行sp_clean_db_free_space会显著影响I/O活动,因此建议您在通常的操作时间之外运行此过程。 在运行sp_clean_db_free_space之前,建议您创建一个完整的数据库备份。

概括地说:

  • 只有在有时间限制的要求,即删除的数据不应以任何可读的形式保留时,才会使用sp_clean_db_free_space存储过程。
  • 运行sp_clean_db_free_space是IO密集型的。
  • 在此之前,Microsoft建议使用完整的数据库备份,因为它有自己的IO和空间要求。

看看dba.stackexchange.com:https://dba.stackexchange.com/questions/11280/how-can-i-truly-delete-data-from-a-sql-server-table-still-shows-up-in-notepad/11281上的相关问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42916320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档