MySQL menawarkan pilihan mesin penyimpanan. Penyimpanan fisik data bergantung pada mesin penyimpanan.
Penyimpanan MyISAM dari VARCHAR
Di MyISAM, VARCHAR
s biasanya hanya menempati panjang sebenarnya dari string ditambah satu atau dua byte panjangnya. Ini dibuat praktis oleh batasan desain MyISAM untuk penguncian tabel sebagai lawan dari kemampuan penguncian baris. Konsekuensi kinerja mencakup profil cache yang lebih ringkas, tetapi juga komputasi offset rekaman yang lebih rumit (lebih lambat).
(Faktanya, MyISAM memberi Anda tingkat pilihan antara ukuran baris fisik tetap dan format tabel ukuran baris fisik variabel tergantung pada jenis kolom yang terjadi di seluruh tabel. Terjadinya VARCHAR
mengubah metode default saja, tetapi adanya TEXT
gumpalan kekuatan VARCHAR
s di tabel yang sama untuk menggunakan metode panjang variabel juga.)
Metode penyimpanan fisik sangat penting dengan indeks, yang merupakan cerita yang berbeda dari tabel. MyISAM menggunakan kompresi ruang untuk keduanya CHAR
dan VARCHAR
kolom, artinya data yang lebih pendek membutuhkan lebih sedikit ruang dalam indeks dalam kedua kasus.
Penyimpanan InnoDB dari VARCHAR
InnoDB, seperti kebanyakan database relasional lainnya, menggunakan mekanisme yang lebih canggih. VARCHAR
kolom yang lebar maksimumnya kurang dari 768 byte akan disimpan sebaris, dengan ruang yang dicadangkan yang cocok dengan lebar maksimum itu. Lebih tepatnya di sini
:
InnoDB saat ini tidak melakukan kompresi ruang dalam indeksnya, kebalikan dari MyISAM seperti yang dijelaskan di atas.
Kembali ke pertanyaan
Namun semua hal di atas hanyalah detail implementasi yang bahkan dapat berubah antar versi. Perbedaan sebenarnya antara CHAR
dan VARCHAR
adalah semantik, dan begitu juga yang berada di antara VARCHAR(20)
dan VARCHAR(50)
. Dengan memastikan bahwa tidak ada cara untuk menyimpan string 30 karakter dalam VARCHAR(20)
, database membuat hidup lebih mudah dan terdefinisi dengan lebih baik untuk berbagai prosesor dan aplikasi yang seharusnya terintegrasi ke dalam solusi perilaku yang dapat diprediksi. Ini masalah besar.
Khusus mengenai nama pribadi, pertanyaan ini dapat memberi Anda beberapa panduan praktis. Orang dengan nama lengkap lebih dari 70 karakter UTF-8 tetap dalam masalah.