estoy corriendo el siguiente comando para eliminar filas en lotes de una mesa grande (150 millones de filas):La supresión de filas en la tabla causa ASEGURA
DECLARE @RowCount int
WHILE 1=1
BEGIN
DELETE TOP (10000) t1
FROM table t1
INNER JOIN table2 t2 ON t2.PrimaryKey = t1.PrimaryKey
WHERE t1.YearProcessed <= 2007
SET @RowCount = @@ROWCOUNT
IF (@RowCount < 10000) BREAK
END
Esta tabla se utiliza ALTAMENTE. Sin embargo, está borrando registros, pero también está causando bloqueo en algunos registros, arrojando así errores al usuario (lo que no es aceptable en el entorno en el que nos encontramos).
¿Cómo puedo eliminar registros antiguos sin causar bloqueos? ¿Debo reducir el tamaño del lote de 10000 registros a 1000? Cómo afectará esto a los tamaños de registro (tenemos muy poco espacio en el disco duro para un crecimiento de registro grande).
¿Alguna sugerencia?
¿Está esto al principio/final de cada lote o eliminación de cada fila? – Sean