MySQL Unbenutzte Tabellen/Spalten herausfinden

rik0

Mitglied
Hallo,

es geht um eine MySQL-Datenbank, die von mehreren Java-Programmen benutzt wird.
Ich möchte herausfinden, welche Spalten nicht benutzt werden. Gibt es dafür vielleicht eine datenbankseitige Funktion, mit der man die Anzahl der Zugriffe pro Spalte herausfinden kann?
Die einzige Möglichkeit, die mir bisher eingefallen ist: Query-log in mysql aktivieren, in allen Programmen alle Funktionen ausführen sodass alle Querys im logfile landen, und dann im Logfile die Querys manuell durchgehen und die Spalten abhaken, die benutzt werden. (Wäre aber zeitaufwendig, weil es viele verschiedene Querys gibt)

Gruß
 
Naja, den Log kannst du ja auch maschinell auswerten.
Ich bezweifle, dass es sowas gibt. Außerdem was heißt denn "benutz werden"? Wie wertest du ein "SELECT *", wenn ich anschließend nur eine Spalte nehme?
 
Naja ich möchte halt die Spalten löschen, bei denen es keinen Unterschied macht, ob sie nun da sind oder nicht, weil sie eben nicht benutzt werden.

In deinem Beispiel würde ich also nur die Spalten als 'benutzt' ansehen, die dann auch ins Ergebnis übernommen werden.
Eine maschinelle Auswertung des Logs wäre also gar nicht so einfach, weil Spalten ja durchaus z.B. für joins wichtig sein können obwohl sie gar nicht im Ergebnis erscheinen.
 
Ja, aber ob du die Spalten beim Select mitnimmst, oder ob die die brauchst sind völlig verschiedene Sachen. (Siehe SELECT *)
Außerdem müsstest du jede Aktion von jedem Programm ggf in jeder Kombination von Parametern ausführen um sicher zu gehen, dass du auch alle Befehle geloggt hast.
Hast du den Quelltext von den Programmen? Dann guck dir lieber an was da gemacht wird.
 
Ja den Quelltext könnte ich mir besorgen - dann werde ich es so machen.

Dachte nur, dass es vielleicht etwas von mysql gibt um 'Datenleichen' aufzuspüren...

Danke & Gruß
 
Hi,

ich finde die Fragestellung etwas merkwürdig.
Eigentlich sollten alle Spalten in einer Datenbank benötigt werden, ansonsten lief doch schon beim Entwickeln des Schemas etwas schief!
Irgendwie kamen die Daten doch auch in die Tabellen - wenn Du jetzt einfach eine Spalte herausnimmst, werden Dir Exceptions bei den Programmen um die Ohren fliegen, die ursprünglich diese Spalten befüllt haben.

Was ist denn das eigentliche Problem? Also wieso willst Du bestimmte Spalten entfernen?
 
Hi,

nunja - zuerst wurde die Datenbank entwickelt. Damals war noch nicht klar, welche Daten nun alles benötigt werden würden. Danach wurden darauf aufbauend die Programme entwickelt. Seitdem sind durchaus schon Spalten/Tabellen entfernt worden, weil sie einfach nicht benötigt werden.

Die Daten wurden manuell in die Tabellen eingetragen und müssen (leider) auch manuell gepflegt werden. Dies ist natürlich sehr zeitaufwendig und fehleranfällig. Es soll in Zukunft auch automatisiert werden aber das dauert noch.

Um nun die manuelle Datenpflege zu erleichtern, sollen unbenutzte Spalten und Tabellen entfernt werden.
 
Okay. Nungut, es bringt wohl nichts über die Situation zu diskutieren. Es ist wie es ist.

Ich habe da eigentlich nur eine Idee: Leg einen leeren Datensatz an und schaue Dir an, welche Fehler entstehen. Vielleicht wirst Du darauß ja schlau.

Mir fiel gerade eine Alternative ein:
Du solltest dafür aber unbedingt ein Backup anfertigen bzw. das nur in einer Testumgebung ausprobieren:
Dem Datenbank-User, der die Daten abruft, könnte man ja die Lese-Rechte für bestimmte Spalten entziehen. Ich bin mir aber nicht sicher, ob man Rechte pro Spalte vergeben kann.
So würden definitiv Exceptions fallen.
 
Zuletzt bearbeitet:

Zurück
Oben