Las operaciones que desencadenan un examen del grupo de búferes pueden ejecutarse lentamente en equipos con memoria grande
Artículo
En este artículo se describe cómo examinar el grupo de búferes de SQL Server puede tardar mucho tiempo en finalizar en equipos de gran memoria.
Se aplica a: SQL Server Número de KB original: 4566579
Síntomas
Ciertas operaciones de Microsoft SQL Server desencadenan un examen del grupo de búferes (la memoria caché que almacena las páginas de base de datos en memoria). En sistemas que tienen una gran cantidad de RAM (1 TB de memoria o superior), el examen del grupo de búferes puede tardar mucho tiempo. Esto ralentiza la operación que desencadenó el examen.
Operaciones que provocan un examen del grupo de búferes
Estas son algunas operaciones que pueden desencadenar un examen del grupo de búferes para que se produzca:
Inicio de la base de datos
Apagado o reinicio de la base de datos
Conmutación por error del grupo de disponibilidad
Eliminación de la base de datos (quitar)
Eliminación de archivos de una base de datos
Copia de seguridad completa o diferencial de la base de datos
Restauración de la base de datos
Restauración del registro de transacciones
Restauración en línea
DBCC CHECKDB o DBCC CHECKTABLE operación
El registro de errores muestra que un examen tardó mucho tiempo
El examen del grupo de búferes tardó 14 segundos: id. de base de datos 7, comando "BACKUP DATABASE", operación "FlushCache", búferes escaneados 115, búferes iterados totales 204640239, tiempo de espera 0 ms. Vea 'https://go.microsoft.com/fwlink/?linkid=2132602' para obtener más información.
Evento extendido para diagnosticar un examen largo
Además, a partir de las mismas compilaciones SQL Server 2016 SP3, SQL Server 2017 CU23 y SQL Server 2019 CU9 , se introdujo el evento extendido de buffer_pool_scan_complete para ayudarle a identificar exámenes de grupos de búferes largos.
Si un examen tarda más de 1 segundo, el XEvent se registrará de la siguiente manera cuando el evento esté habilitado.
nombre
database_id
elapsed_time_ms
command
operación
scanned_buffers
total_iterated_buffers
buffer_pool_scan_complete
7
1308
BACKUP DATABASE
FlushCache
243
19932814
Nota
El umbral está en XEvent es más pequeño para permitirle capturar información con una granularidad más fina.
Solución alternativa
Antes de SQL Server 2022, no había ninguna manera de eliminar este problema. No se recomienda realizar ninguna acción para borrar el grupo de búferes como quitar búferes limpios (DBCC DROPCLEANBUFFERS) del grupo de búferes puede dar lugar a una degradación significativa del rendimiento. La eliminación de páginas de base de datos de la memoria hará que las ejecuciones de consultas posteriores vuelvan a leer los datos de los archivos de base de datos en el disco. Este proceso de acceso a datos a través de E/S de disco hace que las consultas sean lentas.
En SQL Server 2022, este problema se mitiga porque los exámenes del grupo de búferes se paralelizan mediante el uso de varios núcleos. Habrá una tarea por 8 millones de búferes (64 GB) donde se seguirá usando un examen serie si hay menos de 8 millones de búferes. Para obtener más información, vea Examen paralelo del grupo de búferes.
En este módulo se explora la migración de bases de datos de más de 20 TB (consideradas como bases de datos de gran tamaño) y se analizan las técnicas y los procedimientos requeridos para lograr la migración desde el entorno local a Azure con un tiempo de inactividad aceptable y el mínimo riesgo posible. Prepárese para el examen AZ-120, Planning and Administering Microsoft Azure for SAP Workloads.