dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Ghost RecordMaintenance & Bloat

Ghost Record (Hayalet Kayıt)

DELETE edilen satırların yapraktan anında silinmeyip Ghost Cleanup Task tarafından temizlenmek üzere hayalet olarak işaretlenmesidir.

Derin Mimari İncelemesi

SQL Server, DELETE işlemlerinde B-tree concurrency'sini korumak ve kilit çekişmesini azaltmak için satırı anında yaprak sayfadan silmek yerine ghost olarak etiketler.

Arka planda Ghost Cleanup Task her 10 saniyede bir çalışarak bu satırları fiziksel olarak temizler. Ancak yoğun toplu DELETE işlemleri veya uzun süren açık transaction'lar varsa, binlerce ghost record sayfalarda kalarak index scan performansını düşürür ve gereksiz bellek/disk alanı tüketir.

Üretim Gözlem ve Tanı Sorguları

SQL Server
SELECT ghost_record_count, record_count, version_ghost_record_count FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') WHERE ghost_record_count > 0;