考虑一下我们有一个MS SQL Express数据库,它已经增长到近10 Gb。并且考虑我们有一个包含聚集索引的大表。
现在我们要通过删除该表中的某些行来释放一些空间。删除后,db size保持原样,行变为ghost记录。
问题是如果数据库大小达到10 GB的限制会对这些GR产生什么影响?他们会被清洗干净吗?
答案 0 :(得分:1)
它们不会被自动清理。最好的选择是使用
ALTER TABLE <table_name> REBUILD
摆脱所有人工制品。
答案 1 :(得分:0)
执行以下命令并检查Ghost_Record_Count和Version_Ghost_Record_Count列。如果这个很高(在某些情况下是几百万),那么你最有可能得到一个鬼记录清理问题
Select * from sys.dm_db_index_physical_stats(db_id(<dbname>),<ObjectID>,NULL,NULL,’DETAILED’)
以下命令将释放鬼记录
EXEC sp_clean_db_free_space @dbname=N’<dbname>’
您可以使用sp_spaceused查看数据库中的可用空间量
使用DBCC SHRINKDATABASE或DBCC SHRINKFILE缩小特定数据库的数据和日志文件