Les rapports de fonctionnement périodiquement des utilisateurs bloquent les utilisateurs qui font des opérations de crud et provoquent des délais. J'aimerais créer des emplacements en double des tables actuelles pour les utilisateurs du rapport. P>
Je pensais créer un emploi qui recule de la base de données de ma application et la restaure à une base de données de reporting sur le même serveur afin que les utilisateurs exécutant des rapports soient séparés de ceux qui font des opérations de CRUD. Le travail fonctionnera toutes les 10 minutes environ. Les tests initiaux indiquent que le début à la fin sera d'environ 30 secondes. L'espace disque n'est pas un problème. P>
Est-ce une bonne / mauvaise idée? Quels pièges devrais-je faire obstacle? Y a-t-il une meilleure façon de faire cela? P>
4 Réponses :
Cela ressemble à une bonne idée. La seule préoccupation que je serais, est-ce que vous devez mettre à jour toutes les 10 minutes? Cela pourrait aussi ralentir les choses lorsque la mise à jour est en cours d'exécution. D'habitude, celles-ci sont effectuées pendant une nuit (pour avoir le moins d'impact sur les autres), ou si au cours de la journée, à seulement 3 points fixes (par exemple 10h, 13h00 et 16h). p>
Qui sera affecté pendant la sauvegarde / la restauration? Est-ce que juste les utilisateurs du rapport pendant la pièce de restauration?
De plus, si je restais la base de DB à une DB de mise en scène, abandonnez-vous la base de données de rapport lorsque cela est fait et renommez la DB de mise en scène à la DB déclarante?
@Gern Blandston: Je pense que les utilisateurs des deux bases de données pourraient potentiellement être affectés par une sauvegarde / une restauration. Je ne sais pas assez sur le serveur MSSSQL pour savoir s'il serait capable de protéger un groupe, mais je serais pessimiste et suppose que cela ne peut pas (jusqu'à preuve du contraire).
Naturellement pour la plupart des applications de classe d'entreprise, la base de données des transactions est toujours séparée de la base de données de rapport. Le système de transaction est syntonisé pour OLTP et la base de données de reporting peut être dénormée en fonction de la nécessité des scénarios de rapport. Donc, c'est presque une suggestion naturelle. P>
Soyez prudent avec faire des sauvegardes fréquentes - cela pourrait conduire à beaucoup de temps d'arrêt! P>
solutions communes forte> p>
C'est en effet une pratique courante pour créer une instance séparée juste pour la déclaration. p>
Certaines personnes vont même plus loin et mettent en communication sur une machine physique distincte ou une grappe pour isoler davantage cette partie de la charge. P>
Les deux peuvent être traités avec Je voudrais également mentionner que l'approche haut de gamme de ceci est pensées finales forte> p>
Une dernière chose: j'ai vu des magasins sur le point de vue de ce problème, essayez d'éviter de traiter avec elle. Voici les empressements à emporter: Signalement a tendance à piquer à certains moments du mois fort> ou d'année, donc si vous êtes normalement sur le point de tuer votre serveur de base de données, la dernière semaine du mois peut vous pousser sur le bord! p>
Cette question est très similaire: https://stackoverflow.com/questions/190512 / SQL-Server-Séparez-la base de données-for-Rapports P>
Avant de faire une mise à niveau de Forklift, vous pouvez voir si la mise en place de sur vos requêtes déclarantes atténue le problème. Il peut au moins vous acheter un peu de temps pour déterminer ce qui est optimal. P> p>
Mais rappelez-vous que vous deviendrez des lectures sales de cette façon, cela pourrait être un problème dans la déclaration.
@Hlgem - True, mais les données sont de 10 minutes sur le plan actuel! Dans le passé, nous avons eu des problèmes similaires avec des questions très importantes contre une base de données de taille d'entreprise et la nolock a fait une différence énorme i>. PAQUET :-)
Il suffit de souligner que cela peut faire une différence de résultats. Si vous pouvez vivre avec des lectures sales qui est une chose, mais l'affiche devait savoir que c'était ce qu'il aurait.