¿Cómo deshacerse de tablas grandes con el menor impacto en el envío de registros?

Dec 31 2020

Tenga dos tablas relacionadas semi grandes (284,6876,609 filas - 156,785,176 KB y 4,2628,162 filas - 2,212,464 KB) en una base de datos de registro enviada que debe purgarse o eliminarse. ¿Cómo puedo deshacerme de estas dos tablas minimizando el impacto en el envío de registros?

Respuestas

11 J.D. Dec 31 2020 at 21:08

Si DROPusa las tablas, hará que se generen registros mínimos porque no fuerza inmediatamente a que se produzca la recolección de basura en el espacio utilizado, simplemente simplemente elimina la referencia. De manera similar, puede lograr el mismo resultado con TRUNCATE(aunque creo que en tablas grandes podría haber más gastos generales que DROP, tendré que investigar esto y actualizar mi respuesta en consecuencia).

Este es un artículo muy bueno que los detalles por qué TRUNCATEy DROPlas operaciones son uno abierto con menú rápido y generan registros mínimos, lo cual se debe a una característica de SQL Server denominada gota diferido .

De cualquier manera, evite lo DELETEcontrario que generará una tonelada de registros que deberán enviarse y volverse a aplicar en la base de datos de destino.

Esta pregunta de StackOverflow tiene múltiples respuestas con buena información sobre cómo eliminar datos de manera eficiente de una tabla grande (algunos tal vez no estén relacionados específicamente con su pregunta, pero son buenos para referencia futura u otros usuarios con problemas similares).