Cette question est liée à une autre:
Will having multiple filegroups help speed up my database?Quelle est la meilleure façon de gérer un grand nombre de tables dans MS SQL Server?
Le logiciel que nous développons est un outil d'analyse qui utilise MS SQL Server 2005 pour stocker des données relationnelles. L'analyse initiale peut être lente (puisque nous traitons des millions ou des milliards de rangées de données), mais il y a des exigences de performance pour rappeler rapidement les analyses précédentes, de sorte que nous «sauvegardons» les résultats de chaque analyse. Notre approche actuelle consiste à enregistrer les résultats d'analyse dans une série de tableaux «spécifiques à l'exécution», et l'analyse est suffisamment complexe pour aboutir à 100 tables par analyse. Habituellement, ces tables utilisent quelques centaines de Mo par analyse (ce qui est faible par rapport à nos centaines de Go, ou parfois plusieurs TB, de données sources). Mais dans l'ensemble, l'espace disque n'est pas un problème pour nous. Chaque ensemble de tables est spécifique à une analyse et, dans de nombreux cas, cela nous apporte d'énormes améliorations de performance par rapport aux données sources. L'approche commence à se décomposer une fois que nous avons accumulé suffisamment de résultats d'analyse sauvegardés - avant que nous ayons ajouté des fonctionnalités d'archivage/nettoyage plus robustes, notre base de tests a atteint plusieurs tables millions. Mais ce n'est pas exagéré d'avoir plus de 100 000 tables, même en production. Microsoft place une limite théorique assez énorme sur la taille des sysobjects (~ 2 milliards), mais une fois que notre base de données dépasse 100 000 ou plus, les requêtes simples comme CREATE TABLE et DROP TABLE peuvent ralentir considérablement. Nous avons de la place pour débattre de notre approche, mais je pense que cela pourrait être difficile à faire sans plus de contexte, donc je veux plutôt poser la question plus généralement: si nous sommes obligés de créer autant de tables, quel est le meilleure approche pour les gérer? Plusieurs groupes de fichiers? Plusieurs schémas/propriétaires? Plusieurs bases de données? Une autre note: Je ne suis pas ravi de l'idée de "jeter simplement du matériel sur le problème" (c'est-à-dire d'ajouter de la RAM, de la puissance du processeur, de la vitesse du disque). Mais nous ne l'exclurons pas non plus, surtout si (par exemple) quelqu'un peut nous dire définitivement quel effet ajouter de la RAM ou utiliser plusieurs groupes de fichiers aura sur la gestion d'un grand catalogue système.
WOW. Avec de nombreuses tables, que fait Management Studio lors du chargement de la liste? Cela doit être douloureux. –
Nous n'osons pas laisser Management Studio remonter une liste de tables. Chaque fois que quelqu'un le fait par inadvertance, soit ils doivent tuer le processus, soit il se bloque. Mais c'est loin d'être notre plus gros problème. –
Je suis curieux de savoir comment cela s'est avéré pour vous, cela semble être un domaine où presque personne n'a d'informations solides sur la façon de le faire et c'est toute la théorie. Donc, toutes les réponses seraient bonnes à savoir. – DefconRhall