Tenemos una gran base de datos de producción, su tamaño es de alrededor de 300 GB. ¿Existe algún enfoque para mejorar el rendimiento de una consulta de eliminación? En este momento, la velocidad de eliminación es de entre 1-10k por minuto, es muy lenta para nosotros.
sql-server
query-performance
Comunidad
fuente
fuente
Respuestas:
Si está tratando de eliminar una gran cantidad de filas en una sola declaración, es probable que esté esperando la actividad de registro. Así que puedes:
TRUNCATE
oDROP
/CREATE
.SELECT INTO
para colocar los datos que desea mantener en otra tabla, luegoTRUNCATE
, mueva la porción pequeña hacia atrás. (O simplemente suelte la tabla anterior, cambie el nombre de la nueva y vuelva a aplicar restricciones / permisos, etc.)CHECKPOINT
borrar el registro en lugar de realizar copias de seguridad del registro, pero debe asegurarse de volver a configurarlo y realizar una nueva copia de seguridad completa para reiniciar la cadena de registro .fuente
Hay alguna pista, pero ¿qué versión estás usando? ¿Es la edición empresarial? De todas formas:
Agregue detalles, cuando trabaja con una gran base de datos no hay una sola respuesta válida.
fuente
Debería intentar eliminarlos parte por parte, probablemente eliminando en bucle, cada iteración de eliminación es su propia transacción y luego borrando el registro al final de cada iteración de bucle.
Además, necesitaría encontrar el número que va a utilizar como valor en bloque para eliminar los registros. Requiere una prueba exhaustiva, sería mejor si puede probar primero el valor del fragmento en UAT.
Sobre cómo proceder, lo referiría a Separar grandes operaciones de eliminación en fragmentos
fuente
eliminar puede ser lento si la tabla grande tiene clave foránea recursiva.
si es así, encuentre el momento oportuno, desactive los servicios dependientes, desactive la clave externa recursiva, realice una eliminación masiva y luego restaure la clave externa nuevamente.
fuente
Agregando algunos puntos más ...
tablock
opción.Para obtener más ayuda, publique la consulta que está utilizando, la información de la tabla más cualquier información de bloqueo.
fuente