Un posible escenario que me divierte mucho:
- Las filas se escribieron originalmente cuando la base de datos no tenía Instantánea confirmada de lectura (RCSI), Aislamiento de instantánea (SI) o Grupos de disponibilidad (AG) habilitados
- Se habilitó RCSI o SI, o la base de datos se agregó a un Grupo de disponibilidad
- Durante las eliminaciones, se agregó una marca de tiempo de 14 bytes a las filas eliminadas para admitir lecturas RCSI / SI / AG
Dado que este servidor es primario en un AG, se ve afectado al igual que los secundarios. La información de la versión se agrega en la primaria: las páginas de datos son exactamente las mismas en las primarias y secundarias. Los secundarios aprovechan el almacén de versiones para hacer sus lecturas mientras el AG actualiza las filas, pero los secundarios no escriben sus propias versiones de la marca de tiempo en la página. Simplemente heredan las versiones del trabajo de la primaria.
Para demostrar el crecimiento, tomé la exportación de la base de datos Stack Overflow (que no tiene RCSI habilitado) y creé un montón de índices en la tabla Posts. Verifiqué los tamaños de índice con sp_BlitzIndex @Mode = 2 (copiar / pegar en una hoja de cálculo, y limpié un poco para maximizar la densidad de información):
Luego eliminé aproximadamente la mitad de las filas:
BEGIN TRAN;
DELETE dbo.Posts WHERE Id % 2 = 0;
GO
¡Divertidamente, mientras ocurrían las eliminaciones, el archivo de datos crecía para acomodar las marcas de tiempo también! El Informe de uso de disco de SSMS muestra los eventos de crecimiento: aquí está solo la parte superior para ilustrar:
(Me encantaría una demostración donde las eliminaciones hacen crecer la base de datos). Mientras se ejecutaba la eliminación, ejecuté sp_BlitzIndex nuevamente. Tenga en cuenta que el índice agrupado tiene menos filas, pero su tamaño ya ha aumentado en aproximadamente 1,5 GB. Los índices no agrupados en AcceptedAnswerId han crecido drásticamente: son índices en un valor pequeño que en su mayoría es nulo, ¡por lo que sus tamaños de índice casi se han duplicado!
No tengo que esperar a que termine la eliminación para probarlo, así que detendré la demostración allí. El punto es: cuando realiza grandes eliminaciones en una tabla que se implementó antes de que se habilitaran RCSI, SI o AG, los índices (incluido el agrupado) en realidad pueden crecer para acomodar la adición de la marca de tiempo del almacén de versiones.