Ich wurde in meinem Job mehrmals aufgefordert, gegen die erste Normalform zu verstoßen (Spalten über Spalten hinweg wiederholen, wobei Leer- / Nullwerte verwendet werden), "um die Rechenleistung des Computers zu erhöhen". Kurz gesagt, eine "Student" -Tabelle sollte mindestens 8 leere Felder (z. B. Telefone: Telefon1, Telefon2, Telefon3 ...) anstelle meines Vorschlags enthalten - eine "Telefon" -Tabelle, die eine Telefonnummer (und mögliche andere Metadaten) enthält. und der Fremdschlüssel ist die Studenten-ID. Mein Chef sagt, dass es besser ist, sie so zu speichern, weil "es weniger CPU-Zyklen gibt und das auf Webplattformen wichtig ist", anstatt Beziehungen zu verwenden. Ich sage, dass es im schlimmsten Fall vernachlässigbar ist.
In diesem Beispiel ist die Verwendung von Relationen (angenommen, die Tabellen sind mit vielen Datensätzen in einer mittelgroßen Webanwendung gefüllt) erheblich langsamer als die Verwendung dieser Art von Tabellenschema?
quelle
Antworten:
Ich sehe nicht ein, wie jemand eine solche Aussage machen könnte, ohne einige tatsächliche Fakten zu haben, um sie zu stützen. Wenn Ihre Abfragen CPU-gebunden sind, sollten Sie nach Möglichkeiten suchen, um diesen Engpass zu verringern.
Es hört sich so an, als ob Ihr Chef der Meinung ist, dass eine denormalisierte Datenbank am besten funktioniert, aber ich weiß nicht genug über Ihre Anwendung, um zu sagen, ob das richtig ist oder nicht. Wie viele Löschungen, Aktualisierungen und Einfügungen werden für diese Tabelle voraussichtlich erwartet?
Ich würde erwarten, dass ein solches denormalisiertes Design zu einer verringerten CPU-Zeit führen kann, würde aber erwarten, dass Ihre Festplatten-E / A zunehmen würden. Und physische Lesevorgänge von der Festplatte sind viel teurer als ein CPU-Zyklus. Vielleicht muss Ihr Chef also eine ganz bestimmte Metrik (CPU) erfüllen und möchte daher ein ganz bestimmtes Design? In diesem Fall würde ich einfach das erstellen, wonach gefragt wird, und die CPU-Kosten für die ausgeführten Abfragen messen. Wenn Sie eine Verlängerung der Zeit feststellen, möchten Sie möglicherweise einige Designänderungen vorschlagen.
In der Tat ist es wahrscheinlich eine gute Idee, eine Liste aller Metriken zu erhalten, die Ihr Chef sehen möchte, und diese im Laufe der Zeit zu verfolgen.
quelle