Avoir une publication de fusion pour répliquer les BLOB (type image
), a obtenu des E / S de disque à très haute température pour ma taille de données. La publication est téléchargeable uniquement et ne comporte aucun filtre.
Les E / S de disque élevées sont causées par la synchronisation (quand aucun abonné ne se synchronise, tout va bien), fortement corrélée avec le nombre d'abonnés. Cela se produit même lorsqu'aucune donnée n'est modifiée chez Publisher entre les synchronisations, et cela me dérange.
- Taille du tableau répliqué: 7 Mo (le nombre total de lignes est d'environ 100)
- E / S tempdb: ~ 30 Mo / sec pour l'écriture (fichiers journaux et données)
- Nombre d'abonnés: un peu plus de 100, chacun se synchronisant toutes les 30 minutes (plus ou moins régulièrement).
- Durée de conservation fixée à 14 jours
Utilisation de SQL Server 2008 chez Publisher, SQL Server 2005-2008R2 chez les abonnés. Tous les abonnés utilisent la synchronisation Web.
De plus, la synchronisation chez l'abonné prend beaucoup de temps, avec plusieurs occurrences replmerg.log
comme celles-ci:
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
Réglage @stream_blob_columns
et mise en marche essayés sans effet.
La question est: est-ce une bonne idée d'utiliser la réplication de fusion pour envoyer ces objets blob aux abonnés? Nous avons d'autres publications (bien qu'elles n'aient pas de colonnes BLOB) avec beaucoup de données sans problème tempdb. Est-ce une faille SQL Server ou une mauvaise configuration?
L'éditeur et le distributeur sont sur la même instance, SQL Server 2008 SP4, ne peuvent pas être sûrs des abonnés, certains d'entre eux ne sont peut-être pas à jour. Quoi qu'il en soit, je peux préparer un environnement de test avec quelques abonnés ayant des versions contrôlées, si cela semble aider.
Confirmé, que l'utilisation excessive de tempdb causée par l'exécution de sys.sp_MSenumgenerations90
. MSMerge_genhistory
Tableau vérifié , trouvé plus de 1,2 millions d'enregistrements où pubid
est nul.
Trouvé cette conversation avec le gourou de la réplication:
Exécuté sp_mergemetadataretentioncleanup
sans effet.
Trouvé une remarque sur un cas comme celui-ci (trop de lignes MSmerge_genhistory
) où la suppression de lignes où pubid
est nul et genstatus
= 1 a aidé à corriger la réplication.
Lignes supprimées où pubid
est nul (ce qui implique que tous les abonnés sont synchronisés, et qui ne le sont pas - seront réinitialisés en "mode manuel") et le disque IO est de retour à la normale!
J'ai le sentiment que cette situation pourrait être causée par le fait que tous mes abonnés sont anonymes via WebSync et que la plupart d'entre eux ont le même nom d'hôte. Je vais essayer de vérifier si la -hostname
clé aide à ne pas multiplier les enregistrements MSmerge_genhistory
.