Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

varchar(20) dan varchar(50) sama?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah MySQL Connector/J buffer baris saat streaming ResultSet?

  2. Cara melihat kesalahan kueri di PDO PHP

  3. Kolom Tabel Mysql Tidak Boleh Null

  4. NodeJS tidak dapat terhubung ke MYSQL versi terbaru di dalam Docker Container

  5. Mendapatkan perbedaan antara jumlah dua subquery