8
votes

Tables / bases de données séparées pour les opérations de rapport et de crud

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.

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.

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?


0 commentaires

4 Réponses :


3
votes

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).


3 commentaires

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).



1
votes

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.


0 commentaires

1
votes

Soyez prudent avec faire des sauvegardes fréquentes - cela pourrait conduire à beaucoup de temps d'arrêt!

solutions communes

C'est en effet une pratique courante pour créer une instance séparée juste pour la déclaration.

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.

Les deux peuvent être traités avec réplication (qui évite le problème des temps d'arrêt). Ou vous pouvez simplement faire une sauvegarde nocturne et signaler contre cela.

Je voudrais également mentionner que l'approche haut de gamme de ceci est entreposage de données , où vous transformez essentiellement cette nouvelle base de données de rapports en un référentiel optimisé qui est plus efficace pour signaler. Cela a tendance à consommer beaucoup de temps à mettre en œuvre, il est donc pas la solution rapide que vous recherchez.

pensées finales

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 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!

Cette question est très similaire: https://stackoverflow.com/questions/190512 / SQL-Server-Séparez-la base de données-for-Rapports


0 commentaires

2
votes

Avant de faire une mise à niveau de Forklift, vous pouvez voir si la mise en place de xxx

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.


3 commentaires

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 . 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.