Al tener una publicación de combinación para replicar BLOB (tipo image), obtuve E / S de disco tempdb muy altas para mi tamaño de datos. La publicación es de solo descarga y no tiene filtros.
La alta E / S del disco es causada por la sincronización (cuando no hay suscriptores sincronizados, todo está bien), fuertemente correlacionado con el número de suscriptores. Sucede incluso cuando no se cambian datos en Publisher entre sincronizaciones, y eso me molesta.
- Tamaño de la tabla replicada: 7 MB (el recuento total de filas es de aproximadamente 100)
- tempdb I / O: ~ 30 MB / seg para escritura (archivos de registro y datos)
- Número de suscriptores: un poco más de 100, cada uno sincronizándose cada 30 minutos (más o menos uniformemente).
- Período de retención establecido en 14 días.
Usando SQL Server 2008 en Publisher, SQL Server 2005-2008R2 en suscriptores. Todos los suscriptores usan la sincronización web.
Además, la sincronización en el suscriptor lleva mucho tiempo, con múltiples ocurrencias replmerg.logcomo estas:
DatabaseReconciler, 2015/04/21 12:13:40.348, 3604, 25088, S2, INFO: [WEBSYNC_PROTOCOL] Sending client ReconcilerPhase WebSyncReconcilerPhase_RegularDownload DatabaseReconciler, 2015/04/21 12:13:47.063, 3604, 25194, S2, INFO: [WEBSYNC_PROTOCOL] Received server ReconcilerPhase WebSyncReconcilerPhase_LastRegularDownload
Intento de @stream_blob_columnsencendido y apagado sin efecto.
La pregunta es: ¿es una buena idea usar la replicación de mezcla para enviar estos blobs a los suscriptores? Tenemos otras publicaciones (aunque no tienen columnas BLOB) con muchos datos sin problema de tempdb. ¿Es una falla de SQL Server o una mala configuración?
El editor y el distribuidor están en la misma instancia, SQL Server 2008 SP4, no pueden estar seguros acerca de los suscriptores, algunos de ellos tal vez no estén actualizados. De todos modos, puedo preparar un entorno de prueba con pocos suscriptores que tengan versiones controladas, si parece que ayuda.
Confirmado, ese uso excesivo de tempdb causado por la ejecución de sys.sp_MSenumgenerations90. MSMerge_genhistoryTabla marcada , encontrada más de 1.2 millones de registros donde pubides nulo.
Encontré esta conversación con el gurú de la replicación:
Ejecutado sp_mergemetadataretentioncleanupsin efecto.
Encontré un comentario en un caso como este (demasiadas filas MSmerge_genhistory) donde eliminar filas donde pubides nulo y genstatus= 1 ayudó a corregir la replicación.
Las filas eliminadas donde pubides nulo (lo que implica que todos los suscriptores están sincronizados, y que no lo están, se reinicializarán en "modo manual") y el disco IO vuelve a la normalidad de nuevo.
Tengo la sensación de que esta situación podría ser causada por el hecho de que todos mis suscriptores son anónimos a través de WebSync y la mayoría de ellos tienen el mismo nombre de host. Intentaré verificar si la -hostnameclave ayuda a no multiplicar registros MSmerge_genhistory.