Bonjour,
Nous sommes en phase de test de mise en place d'une réplication SQL Server d'une base "master" vers une seule "slave" abonnée. (instances et serveurs différents)
Le côté mise en place sur environnement de test n'a posé aucun problème, les bases se répliquent bien en mode transactionnel après un snapshot initial, je n'ai que quelques secondes d'écart en terme de données, ce qui est tout à fait acceptable puisque l'idée de la slave est de mettre sur pied une alternative en readonly pour du reporting et arrêter de solliciter la prod.
Sauf que je m'aperçois que sur l'instance où la base "slave" se trouve, j'ai un souci de performances sur des requêtes. Attention : pas un souci de performance de réplication, un souci de perf sur la base SQL "slave", autrement dit un SELECT sur une table met 10 secondes sur la slave alors qu'il met 3 secondes sur master. Alors que la Slave n'est absolument pas sollicitée.
Si je fais un backup de la master pour restore sur la même instance où se trouve la base slave, pour comparer, là je retrouve des performances comparables à la master. Seule la base "slave" semble être impactée sur l'instance, pas la copie de la prod faite en backup/restore à la main.
Comment l'expliquer ?
Les pistes déjà explorées :
- problème d'index tables (j'ai activé depuis la réplication des index non clustered qui ne l'étaient pas par défaut), mais même problème ensuite, pas d'amélioration avec pourtant des index identiques entre prod et slave
- arrêt du moteur de synchronisation sur l'instance "slave" juste pour tester (car j'ai choisi de le faire tourner sur le slave pour déporter la charge de travail dessus plutôt que la prod), mais pas d'amélioration non plus
Auriez-vous des pistes générales à explorer ? Est-ce quelque chose de connu ? (Par ex. une base slave issue de réplication est par définition moins performante ?)
Merci pour vos lumières
Partager