Ajuste del rendimiento de la tabla de purga de datos en SQL Server 2016

Aug 15 2020

Tengo que automatizar la purga de un gran volumen de datos desde la tabla principal hasta el archivo.

Pasos que estoy siguiendo:

  1. Estoy insertando los datos de la tabla principal a la tabla de archivo.

  2. Después de verificar de forma cruzada el conteo en ambas tablas, eliminando los datos de la tabla principal.

Riesgo: la declaración de eliminación puede quedar bloqueada y la base de datos pasará al modo de recuperación.

Nota : no podemos realizar ninguna operación DDL en la tabla principal ya que es una tabla de transacciones en vivo. Podemos ir con DML.

  • Base de datos: SQL Server 2016
  • SO: Windows e IIS

Respuestas

4 MTay Aug 15 2020 at 15:58

DDL es una de las principales formas de acelerar la eliminación de registros, pero dado que DDL no es una opción y se enfrenta a "estados bloqueados" para eliminar declaraciones, ¿quizás sugiero que analice la eliminación de registros en lotes?

Consulte el enlace y aquí hay un ejemplo de consulta basado en el enlace:

DECLARE @Batch INT = 1000
WHILE 1 = 1
BEGIN
    DELETE TOP (@Batch)
    FROM MyTable
    WHERE Date < ‘20200401’';
    IF @@ROWCOUNT < @Batch BREAK
END

En este caso, cuando eliminemos por Fecha, asegúrese de tener un índice en Fecha para que SQL Server pueda capturar rápidamente solo esas filas. Querrá evitar el bloqueo a nivel de tabla.