当前位置:   article > 正文

认识SQL Server的虚影行(Ghost record)_sql server record

sql server record

目录

什么是SQL Server的虚影行

在SQL Server中,为了加快数据的删除与数据删除后的回滚操作,对含有索引的表引入了数据的逻辑删除,即数据先被标记为删除,再进行物理删除。这些被标记删除,而还未执行物理删除的记录行,则被称为虚影行,即ghost record(又被称为ghost row)

Row in the leaf level of an index that has been marked for deletion, but has not yet been deleted by the database engine.

下图所示是SSMS中某个表虚影行的信息,
索引属性->碎片选项->虚影行数
虚影行数

认识并维护虚影行

实际上SQL Server的虚影行由后台线程:ghost_cleanup自主维护。

为了更清晰的理解上述内容,我们做如下演示:创建一张含聚集索引的表并插入5000条记录,然后通过trace flags禁用后台线程ghost_cleanup,再删除表中所有记录后,最终观察记录行数的变化及影响。

首先,我们创建一个测试数据库mydb

USE master
GO

--创建一个测试数据库
CREATE DATABASE mydb;
GO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

然后在这个库中,创建一张含有5000条记录的聚集索引表ghosttest:

--创建一个测试表ghosttest
CREATE TABLE ghosttest(
      id int identity(1,1) NOT 
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/759850
推荐阅读
相关标签
  

闽ICP备14008679号