2010-08-30 6 views
1

Je travaille avec une base de données existante qui, en raison de la mauvaise gestion et la conception a eu un wildgrowth de colonnes qui ne sont ou ne sont plus utilisés beeing.Trouver des colonnes non utilisées

Est-il possible à une certaine façon de demander l'utilisation des colonnes? Comme dans combien de fois une colonne est sélectionnée (soit spécifiquement ou avec *, soit jointe)?

Il me semble que ce genre est quelque chose que nous devrions être en mesure de récupérer en quelque sorte, mais j'ai été incapable de trouver quoi que ce soit comme ça.

Salutations,

F.B. ten Kate

+3

Pourriez-vous spécifier quel moteur de base de données? –

+0

Y a-t-il des exécutions dynamiques? Et s'il vous plaît donner un indice sur RDMS utilisé. Sinon, la réponse ne peut pas être donnée. –

+0

Désolé Désolé :) a oublié de mentionner complètement -.- » Je parle d'un SQL Server 2005 –

Répondre

3

Malheureusement, cette analyse du côté DB ne va pas vraiment être une réponse complète. J'ai vu BEAUCOUP d'exemples où le code de l'application nécessitait seulement 3 colonnes d'une table de 10+ colonnes, mais les sélectionnait toutes de toute façon.

Votre colonne accuserait encore sur un rapport d'utilisation dans toute sorte de trace ou de profilage que vous avez fait, mais il peut toujours pas être utilisé EFFECTIVEMENT.

Vous devrez peut-être a) analyser la collection complète d'applications qui utilisent ce site Web ou b) commencer à rédiger un doc de style de retour sur investissement pour savoir si cela vaut la peine d'être reconstruit.

+1

+1 enviroment Bon point. Votre meilleur pari, créez une copie de la base de données, installez l'application (s) sur un machine de test, et commencez à supprimer/renommer des colonnes/tables et voir ce qui se casse ou ne casse pas ... avoir des tests automatisés pour déterminer si l'application fonctionne ou ne serait pas idéal. – CaffGeek

+0

Précisément. Ce serait le moment idéal pour créer une suite complète de tests d'intégration, à condition qu'ils ne soient pas en place, et commencer à tester le (s) système (s) avec des colonnes suspectes supprimées. –

+0

Oui, je suis conscient de cela, le problème est que la base de données est vraiment assez grande (25 concerts sur les données atm) et je veux commencer quelque part.Je voudrais commencer par se débarrasser de toutes les colonnes qui n'ont pas été mises à jour/insérées depuis 6 mois des choses comme ça. Idéalement je réécrire chaque chose qui utilise la base de données et la remodeler dans son ensemble (pouvez-vous croire qu'il n'y a pas de FK .....: '() Quelqu'un peut-il suggérer quelques bons articles sur le démarrage avec l'intégration tests? –

0

This article vous donnera une bonne idée de la façon de rechercher tout le code fixe (prodedures, vues, fonctions et déclencheurs) pour les colonnes qui sont utilisées. Le code dans l'article recherche une combinaison table/colonne spécifique. Vous pouvez facilement l'adapter à toutes les colonnes. Pour tout ce qui est exécuté dynamiquement, vous devrez probablement configurer un profiler trace.

0

Même si vous pouviez déterminer si une colonne avait été utilisée dans le passé période X de temps, serait-ce suffisant? Il peut y avoir un programme obscur là-bas qui remplit une colonne une fois par semaine, un mois, un an; ou une fois chaque fois qu'ils cliquent sur le bouton mystère que personne ne clique, ou pour enregistrer le rapport que seul Fred en comptabilité court (il a quitté il y a deux ans), ou qui est connecté si un seul bogue rare survient (durant l'heure d'été Mon point est, la seule façon dont vous pouvez vraiment être sûr qu'une colonne n'est absolument pas utilisée par quoi que ce soit est de tout réviser - chaque appel, chaque ligne de code, chaque vidage de données Excel ad hoc , chaque éventualité possible - tout qui fait référence à la base de données. Comme cela peut être tout sauf inatteignables, essayez d'obtenir un groupe officiellement défini des programmes et des procédures qui doivent être pris en charge, se pencher en arrière pour vous assurer qu'ils sont pris en charge, et être prêt à arranger les choses quand quelque négligé ou oublié morceau de fonctionnalité se présente

Questions connexes