Sesuai dokumen online , ada batas baris 64 ribu dan Anda bisa menentukan ukuran baris dengan menggunakan:
row length = 1
+ (sum of column lengths)
+ (number of NULL columns + delete_flag + 7)/8
+ (number of variable-length columns)
Anda harus ingat bahwa panjang kolom bukan pemetaan satu-ke-satu dari ukurannya. Sebagai contoh, CHAR(10) CHARACTER SET utf8
membutuhkan tiga byte untuk masing-masing dari sepuluh karakter karena pengkodean tertentu harus memperhitungkan properti tiga-byte-per-karakter dari utf8
(itu pengkodean MySQLutf8
daripada UTF-8 "nyata", yang dapat memiliki hingga empat byte ).
Tetapi, jika ukuran baris Anda mendekati 64K, Anda mungkin ingin memeriksa skema database Anda. Ini adalah tabel langka yang perlu selebar itu dalam database yang diatur dengan benar (3NF) - itu mungkin, hanya saja tidak terlalu umum.
Jika Anda ingin menggunakan lebih dari itu, Anda dapat menggunakan BLOB
atauTEXT
tipe . Ini tidak diperhitungkan terhadap batas baris 64K (selain jejak administratif kecil) tetapi Anda harus mengetahui masalah lain yang berasal dari penggunaannya, seperti tidak dapat mengurutkan menggunakan seluruh blok teks di luar angka tertentu karakter (meskipun ini dapat dikonfigurasi ke atas), memaksa tabel sementara berada di disk daripada di memori, atau harus mengkonfigurasi klien dan server comms buffer untuk menangani ukuran secara efisien.
Ukuran yang diizinkan adalah:
TINYTEXT 255 (+1 byte overhead)
TEXT 64K - 1 (+2 bytes overhead)
MEDIUMTEXT 16M - 1 (+3 bytes overhead)
LONGTEXT 4G - 1 (+4 bytes overhead)
Anda masih memiliki ketidakcocokan byte / karakter (sehingga MEDIUMTEXT utf8
kolom dapat menyimpan "hanya" sekitar setengah juta karakter (16M-1)/3 = 5,592,405
) , tetapi masih sangat memperluas jangkauan Anda.