热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

关于鬼影记录的翻译一

关于鬼影记录的翻译一原文链接:很多年前,我在各种各样的论坛看到关于鬼影清理任务的帖子当我还在存储引擎开发团队的时候。之前鬼影清除任务有一些bug在里面,KB文章是KB932115和KB815594,不过这两篇文章介绍鬼影机制的信息还是很少由于某些原因,在我

关于鬼影记录的翻译一 原文链接: 很多年前,我在各种各样的论坛看到关于鬼影清理任务的帖子当我还在存储引擎开发团队的时候。 之前鬼影清除任务有一些bug在里面,KB文章是KB932115和KB815594,不过这两篇文章介绍鬼影机制的信息还是很少 由于某些原因,在我

关于鬼影记录的翻译一

原文链接:

很多年前,我在各种各样的论坛看到关于鬼影清理任务的帖子当我还在存储引擎开发团队的时候。
之前鬼影清除任务有一些bug在里面,KB文章是KB932115和KB815594,服务器空间,不过这两篇文章介绍鬼影机制的信息还是很少
由于某些原因,在我的旧的博客里面没有提及鬼影,今天我打算写一篇深入鬼影清理任务的文章

那么,什么是鬼影清理呢?这是一个后台进程用来清理鬼影记录的.通常与鬼影清理任务一起被提及.
什么是鬼影记录呢?上星期我曾经在anatomy OF a record post主题里简短描述了一下,在一张有索引的表里已经
删除了的一条记录或者在快照隔离级别的数据库里,一张没有任何索引的表里已经删除了的一条记录那条记录就是鬼影记录

从聚集索引表这方面讲述鬼影记录会好一些,鬼影就是一个delete操作,但是他实际不是从数据页进行物理删除,他只是
在数据页标记那条记录“已经删除了”或“已经鬼影了”。这对于删除操作的快速执行是一个性能的优化。
这也让删除操作的回滚执行得更快因为只需要把“已经删除了的”或“已经鬼影了的”的记录重新标记为“未删除“,这样就不用
重新插入已经删除了的记录。已经删除了的记录将会在稍后被一个后台的鬼影清理进程/任务物理删除(删除了的记录的那个位置,
不会被其他记录重写)。鬼影记录会在空的数据页面或者空的索引页面插入一条记录,以避免那个空的数据页面或者空的索引页面
被释放,当回滚事务的时候能保证那个数据页或索引页还存在

鬼影记录清理任务不能物理删除已经被标记为鬼影记录的的记录,除非你提交你的事务,确认删除操作已经提交,因为已经删除的记录
有锁,直到提交事务的时候才会解锁。顺便说一下,如果一条记录被标记为“已经删除了的”在一个数据页上,那么,就算加上nolock选项
或者使用READ UNCOMMITTED隔离级别也不能读取得到已经标记为“鬼影”的那条记录

当一条记录已经被删除,并且标记为鬼影记录,那么鬼影记录所在的那个数据页也会被标记为鬼影页面,在PFS页面会有所体现
并且信息会记录在数据页的页面头部。在PFS页记录当前存在鬼影记录的数据页,也能提醒数据库,当前数据库中存在一些鬼影记录
还没有去清理。鬼影记录清理任务不知道哪些数据页面有鬼影记录就算有删除操作发生。只有当扫描操作读取到已经标记为鬼影的
数据页面的时候。


鬼影记录清理任务每5秒钟进行一次查找鬼影记录的任务。扫描任务通过每个数据库的PFS页,查看是否有鬼影记录页面存在,
如果存在就通知鬼影清理任务清理鬼影记录页面里的鬼影记录。如果不存在,扫描任务就去扫描下一个数据库。
鬼影清理任务每次清理最多10个页面的鬼影记录,在我印象中好像是10个页面,以确保系统不会有任何影响。
所以,鬼影记录最终一定会被删除,通过鬼影清理任务。如果鬼影清理任务扫描到当前数据库没有鬼影记录,香港空间,那么他就会
跳过这个数据库去扫描下一个数据库

您能够告诉鬼影记录清理任务是怎样工作的吗?在SQLSERVER2005里,您能够使用下面的代码在
sys.dm_exec_requests视图里查看鬼影清理任务

##myexecrequests 5 FROM sys.dm_exec_requests ; NOCOUNT ON; ; ) ##myexecrequests sys.dm_exec_requests (*) 19 FROM ##myexecrequests 20 END; ##myexecrequests; ,美国空间

推荐阅读
  • 本文探讨了为何DataWindow.NET在PowerBuilder 11之后版本中不再被支持,并提供了一种在PB12.5中恢复此功能的解决方案。欢迎交流与反馈。 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • SonarQube配置与使用指南
    本文档详细介绍了SonarQube的配置方法及使用流程,包括环境准备、样本分析、数据库配置、项目属性文件解析以及插件安装等内容,适用于具有Linux基础操作能力的用户。 ... [详细]
  • 1、服务器配置信息① 主服务器IP:192.168.1.2② 从服务器IP:192.168.1.3③ 操作系统:主服务器:Win8,从服务器࿱ ... [详细]
  • 统一幻灯片标题:使用母版功能的技巧
    本文详细介绍了如何通过PowerPoint中的幻灯片母版功能,实现所有幻灯片标题的一致性设置。同时,提供了其他办公软件和编程相关的实用技巧。 ... [详细]
  • 本文介绍如何利用JavaScript在页面加载时为ASP.NET的DropDownList控件设置特定的选项值。 ... [详细]
  • 本文详细介绍了MySQL在Linux环境下的主从复制技术,包括单向复制、双向复制、级联复制及异步复制等多种模式。主从复制架构中,一个主服务器(Master)可与一个或多个从服务器(Slave)建立连接,实现数据的实时同步。 ... [详细]
  • 解决PHP与MySQL之间的编码不匹配问题
    探讨如何有效解决PHP与MySQL之间常见的编码问题,确保数据的正确传输与显示。 ... [详细]
  • 使用Docker部署Gitea自托管Git服务
    Gitea是由Gogs社区分叉而来的开源自托管Git服务,旨在提供一个更加灵活和易于维护的解决方案。本文将详细介绍如何利用Docker容器技术快速部署Gitea。 ... [详细]
  • Oracle 数据库提供了自动化文件管理(OFM)的功能,允许用户通过设置特定参数来简化数据文件和日志文件的创建过程。当配置了 db_create_file_dest 和 db_create_online_log_dest_n 参数后,系统能够自动处理文件的创建与删除。 ... [详细]
  • 本文档整理了公司内部常用的网站链接和重要资源路径,包括部门周报、内控报销系统、邮件服务等,同时提供了相关数据库的登录信息。 ... [详细]
  • 深入理解Hibernate延迟加载机制
    本文探讨了Hibernate框架中的延迟加载(懒加载)特性,分析其对程序性能的影响及实现原理,同时提供了具体的代码示例来说明如何配置和使用延迟加载。 ... [详细]
  • 睿智汇海教育致力于培养杰出的IT专业人才,确保学员在就业市场上具备竞争力,助其实现职业成功。我们提供的C#/.Net/Asp.Net培训课程,旨在通过系统的教学和丰富的实践机会,帮助学员掌握最新的技术知识。 ... [详细]
  • MySQL 5.7 绿色版安装及 my.ini 配置详解
    本文主要针对最近因系统重装导致的MySQL配置问题,详细介绍了MySQL 5.7.24绿色解压版的安装步骤及my.ini配置文件的关键设置,帮助用户顺利完成数据库的安装与配置。 ... [详细]
  • MyBatis入门指南
    本文详细介绍了MyBatis的基础知识,包括如何整合日志框架(如log4j和logback),使用外部JDBC文件,getMapper()方法的应用,以及别名设置等技巧。 ... [详细]
author-avatar
潇潇洒洒牛仔_584
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有