Genellikle veritabanı alanlarının 255 karakter büyüklüğüne ayarlandığını görürsünüz, bunun geleneksel / tarihi nedeni nedir? Sayfalama / bellek sınırları ve performansla ilgili bir şey olduğunu varsayıyorum, ancak 255 ile 256 arasındaki fark her zaman kafamı karıştırdı.
varchar(255)
Bu kapasite veya büyüklüğü göz önüne alındığında, bir dizin değil , niye 255 256 daha fazla tercih edilir? Bayt bir amaç için ayrıldı mı (sonlandırıcı veya null falan)?
Muhtemelen varchar (0) saçmalık (sıfır kapasiteye sahip)? Hangi durumda 2 ^ 8 alan mutlaka 256 olmalıdır?
Performans avantajları sağlayan başka büyüklükler var mı? Örneğin varchar (512), varchar (511) veya varchar (510) 'dan daha az performans mı gösteriyor?
Bu değer eski ve yeni tüm ilişkiler veritabanları için aynı mıdır?
Feragatname - Ben bir DBA değil geliştiriciyim, iş mantığımın bilindiği yere uygun alan boyutları ve türleri kullanıyorum, ancak bu tercihin tarihsel nedenini artık alakalı olmasa bile bilmek istiyorum (hatta hala alakalı ise daha fazla).
Düzenle:
Cevaplar için teşekkürler, bir baytın boyutu depolamak için kullanıldığı konusunda bir fikir birliği var gibi görünüyor, ancak bu konuyu tam olarak aklımda halletmiyor.
Meta veriler (dize uzunluğu) aynı bitişik bellekte / diskte saklanıyorsa, bir anlam ifade eder. 1 bayt meta veri ve 255 bayt dize verisi birbirine çok iyi uyuyor ve muhtemelen düzenli ve düzenli 256 bitişik depolama alanına sığacaktı.
Ancak ... Meta veriler (dize uzunluğu), gerçek dize verilerinden (belki de bir ana tabloda) ayrı olarak depolanırsa, yalnızca 1 baytlık bir tamsayıyı depolamak daha kolay olduğu için dize verilerinin uzunluğunu bir bayt ile sınırlamak için metadata biraz tuhaf görünüyor.
Her iki durumda da, muhtemelen DB uygulamasına bağlı bir incelik gibi görünmektedir. 255'i kullanma pratiği oldukça yaygın görünüyor, bu yüzden bir yerdeki biri başlangıçta bunun için iyi bir vaka tartışmış olmalı, herkes bu davanın ne olduğunu hatırlayabilir mi? Programcılar herhangi bir sebep olmadan yeni bir uygulama benimsemez ve bu bir kez yeni olmalıydı.