加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – Ghost清理

发布时间:2020-12-12 16:56:43 所属栏目:MsSql教程 来源:网络整理
导读:我对ghost清理过程的理解是,它每5秒钟就会删除一个索引中的幻影记录.因此它不会使系统过载,它一次只能“清理”大约十页. 那么,这意味着它每五秒只能清理大约8万条记录吗?似乎我的索引总是充满了幻影记录,清理工作永远不会完成. 所以,假设我运行一个删除,可能
我对ghost清理过程的理解是,它每5秒钟就会删除一个索引中的幻影记录.因此它不会使系统过载,它一次只能“清理”大约十页.

那么,这意味着它每五秒只能清理大约8万条记录吗?似乎我的索引总是充满了幻影记录,清理工作永远不会完成.

所以,假设我运行一个删除,可能是一百万行,这些数百万行的索引记录大小约为8Gb.所以差不多是80k的100,000倍.这是否意味着幽灵清理过程需要500,000s,或者差不多六天才能完成?

显然我在这里遗漏了一些东西,因为清除幻影记录需要很长时间才有意义.那个击中同一个指数的其他活动怎么样? ghost清理过程会导致等待,还是必须等待其他进程?

[我们在OpsMgrDW中看到的性能问题带来了这个问题,我们希望了解更多有关此过程的信息]

解决方法

我写了两篇全面的博客文章来解释幽灵清理(它是唯一一个在任何地方深入解释的地方,无论是印刷版还是在线版).

第一个是Inside the Storage Engine: Ghost cleanup in depth,第二个是Ghost cleanup redux.是的,每次10页,鬼清理任务可能永远不会赶上大量的连续删除.

通过确保存储引擎“看到”鬼记录,可以积极地触发除10页 – 每5秒之外的Ghost清理.使用类似的方法强制扫描受影响的表或索引

select(from [problem-table] with(index = problem-index)

这将排除一个积极清理幽灵记录的请求.但要注意,它会产生大量的事务日志.它们也应该通过索引重建来清除,或者作为常规索引维护的一部分进行重组.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读