Sie sehen häufig Datenbankfelder mit einer Größe von 255 Zeichen. Was ist der traditionelle / historische Grund dafür? Ich nehme an, es hat etwas mit Paging- / Speicherbeschränkungen und Leistung zu tun, aber die Unterscheidung zwischen 255 und 256 hat mich immer verwirrt.
varchar(255)
Wenn man bedenkt, dass dies eine Kapazität oder Größe ist, kein Indexer , warum wird 255 gegenüber 256 bevorzugt? Ist ein Byte für einen bestimmten Zweck reserviert (Terminator oder Null oder so)?
Vermutlich ist varchar (0) ein Unsinn (hat keine Kapazität)? In welchem Fall sollten 2 ^ 8 des Raums sicher 256 sein?
Gibt es andere Größen, die Leistungsvorteile bieten? Ist beispielsweise varchar (512) weniger leistungsfähig als varchar (511) oder varchar (510)?
Ist dieser Wert für alle alten und neuen Beziehungsdatenbanken gleich?
Haftungsausschluss - Ich bin ein Entwickler, kein DBA. Ich verwende Feldgrößen und -typen, die meiner Geschäftslogik entsprechen , sofern dies bekannt ist. Ich möchte jedoch den historischen Grund für diese Präferenz kennen, auch wenn sie nicht mehr relevant ist (aber sogar mehr, wenn es noch relevant ist).
Bearbeiten:
Vielen Dank für die Antworten, es scheint eine gewisse Übereinstimmung zu geben, dass ein Byte zum Speichern der Größe verwendet wird, aber dies regelt die Angelegenheit in meinem Kopf nicht endgültig.
Wenn die Metadaten (Zeichenfolgenlänge) im selben zusammenhängenden Speicher / Datenträger gespeichert sind, ist dies sinnvoll. 1 Byte Metadaten und 255 Byte Zeichenfolgendaten würden sehr gut zueinander passen und in 256 zusammenhängende Speicherbytes passen, was vermutlich ordentlich und ordentlich ist.
Aber ... Wenn die Metadaten (Zeichenfolgenlänge) getrennt von den tatsächlichen Zeichenfolgendaten gespeichert werden (möglicherweise in einer Mastertabelle), müssen Sie die Länge der Zeichenfolgendaten um ein Byte beschränken, nur weil es einfacher ist, nur eine Ganzzahl von 1 Byte zu speichern von Metadaten scheint ein bisschen seltsam.
In beiden Fällen scheint es eine Subtilität zu sein, die wahrscheinlich von der DB-Implementierung abhängt. Die Praxis, 255 zu verwenden, scheint ziemlich weit verbreitet zu sein, also muss irgendwo jemand am Anfang einen guten Fall dafür argumentiert haben. Kann sich jemand daran erinnern, was dieser Fall war / ist? Programmierer werden keine neue Praxis ohne Grund anwenden, und dies muss einmal neu gewesen sein.