Anda sering melihat bidang-bidang basis data yang ditetapkan memiliki ukuran 255 karakter, apa alasan tradisional / historis mengapa? Saya menganggap itu ada hubungannya dengan batas paging / memori, dan kinerja tetapi perbedaan antara 255 dan 256 selalu membingungkan saya.
varchar(255)
Mengingat ini adalah kapasitas atau besarnya, bukan pengindeks , mengapa 255 lebih disukai daripada 256? Apakah byte disediakan untuk tujuan tertentu (terminator atau null atau sesuatu)?
Agaknya varchar (0) adalah omong kosong (memiliki kapasitas nol)? Kalau begitu, 2 ^ 8 ruang seharusnya 256?
Apakah ada besaran lain yang memberikan manfaat kinerja? Sebagai contoh adalah varchar (512) kurang berkinerja daripada varchar (511) atau varchar (510)?
Apakah nilai ini sama untuk semua database relasi, lama dan baru?
disclaimer - Saya bukan pengembang DBA, saya menggunakan ukuran dan tipe bidang yang sesuai dengan logika bisnis saya di mana itu diketahui, tapi saya ingin tahu alasan historis untuk preferensi ini, bahkan jika itu tidak lagi relevan (tetapi bahkan lebih banyak jika masih relevan).
Edit:
Terima kasih atas jawabannya, tampaknya ada beberapa konsensus bahwa byte digunakan untuk menyimpan ukuran, tetapi ini tidak menyelesaikan masalah secara definitif dalam pikiran saya.
Jika meta data (panjang string) disimpan dalam memori / disk yang berdekatan, masuk akal. 1 byte metadata dan 255 byte data string, akan cocok satu sama lain dengan sangat baik, dan sesuai dengan 256 byte penyimpanan yang berdekatan, yang mungkin rapi dan rapi.
Tapi ... Jika metadata (panjang string) disimpan secara terpisah dari data string aktual (mungkin dalam tabel master), maka untuk membatasi panjang data string dengan satu byte, hanya karena lebih mudah untuk menyimpan hanya integer 1 byte metadata tampaknya agak aneh.
Dalam kedua kasus tersebut, kelihatannya ada kehalusan yang mungkin tergantung pada implementasi DB. Praktek menggunakan 255 tampaknya cukup luas, jadi seseorang di suatu tempat pasti berpendapat kasus yang baik untuk itu pada awalnya, adakah yang bisa mengingat apa kasus itu? Programmer tidak akan mengadopsi praktik baru apa pun tanpa alasan, dan ini pasti baru sekali.