Frage

Was ist der Nachteil, einen großen Wert für max Wahl, wenn eine varchar oder varbinary Spalte erstellen?

Ich bin mit MS SQL, aber ich nehme an, dies auch auf andere dbs dienlich ist.

Danke

War es hilfreich?

Lösung

Das hängt davon ab, ob es überhaupt sinnvoll, eine große Menge an Daten in der jeweiligen Spalte zu speichern.

Wenn Sie deklarieren eine Spalte, die nie richtig viele Daten (das heißt Mitarbeiter Vorname als VARCHAR (1000)) gespeichert werden sollten, können Sie mit einer Vielzahl von Problemen am Ende

  1. Viele, wenn nicht die meisten Client-APIs (d.h. ODBC-Treiber, JDBC-Treiber, etc.) Speicherpuffer auf dem Client zugewiesen, die groß genug sind, um die maximale Größe einer bestimmten Spalte zu speichern. Also auch wenn nur die Datenbank der tatsächlichen Daten zu speichern hat, Sie im Wesentlichen der Größe des Speichers erhöhen kann die Client-Anwendung verwendet.
  2. Sie verlieren die Fähigkeit, Datenvalidierungsregeln zu fahren (oder Informationen über die Daten zu vermitteln) aus der Tabellendefinition. Wenn die Datenbank erlaubt es 1000 Zeichen Vornamen, wird jede Anwendung, die mit der Datenbank interagiert wahrscheinlich seine eigenen Regeln für wie groß Mitarbeiter Name seiner am Ende mit kann. Ist dies nicht, indem eine gespeicherte Prozedur Schicht zwischen allen Anwendungen und den Tabellen gemildert wird, führt dies im Allgemeinen zu verschiedenen Anwendungen verschiedene Regeln haben.
  3. Murphys Gesetz besagt, dass, wenn Sie 1000 Zeichen zulassen, jemand 1000 Zeichen schließlich in der Spalte gespeichert werden, oder zumindest einen Wert groß genug, um Fehler in einer oder mehrere Anwendung führen (dh niemand, ob jede Anwendung des Mitarbeiters Namen sehen geprüft Feld kann 1000 Zeichen angezeigt werden).

Andere Tipps

Abhängig von der RDBMS. IIRC ordnet MySql einen 2-Byte-Overhead für VARCHARs> 255 Zeichen (die VARCHAR Länge zu verfolgen). MSSQL <= 2000 erlaubt es dir, eine Zeilengröße zuweisen> 8060 Bytes, würde aber fehlschlagen, wenn Sie versucht, eine Zeile einzufügen oder zu aktualisieren, die tatsächlich 8060 Bytes überschritten. SQL 2005 [1] ermöglicht den Einsatz, sondern wird eine neue Seite für den Überlauf zuweisen und einen Zeiger hinter sich lassen. Dies ist offensichtlich, Auswirkungen Leistung.

[1] varchar (max) ist so etwas wie ein Sonderfall, sondern auch eine Überlaufseite zuzuweisen, wenn die Länge des Feldes ist> 8000 oder die Zeile> 8060. Diese mit MSSQL Standardeinstellungen ist, und Verhalten kann mit ändern die großen Typen in Datenreihe Option.

Sie könnten ein Risiko des Brechens Ihre Anwendung des Hinzufügen, wenn ein großen Daten in irgendwie bekommen (wie von einer externen Schnittstelle) und Ihre Anwendung ausgelegt ist, es nicht zu handhaben.

Als gutes Design, sollten Sie die Größe der Felder auf einen realistischen Wert immer begrenzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top