Theo các tài liệu MySQL , có bốn loại văn bản:
- TINYTEXT
- BẢN VĂN
- TRUNG TÂM
- VĂN BẢN DÀI
Độ dài tối đa mà tôi có thể lưu trữ trong một cột của mỗi loại dữ liệu giả sử mã hóa ký tự là UTF-8 là bao nhiêu?
Theo các tài liệu MySQL , có bốn loại văn bản:
Độ dài tối đa mà tôi có thể lưu trữ trong một cột của mỗi loại dữ liệu giả sử mã hóa ký tự là UTF-8 là bao nhiêu?
Câu trả lời:
Từ tài liệu :
Loại | Chiều dài tối đa ----------- + ------------------------------------- TINYTEXT | 255 (2 8 1) byte VĂN BẢN | 65,535 (2 16 1) byte = 64 KiB TRUNG TÂM | 16,777,215 (2 24 1) byte = 16 MiB LONGTEXT | 4.294.967.295 (2 32 1) byte = 4 GiB
Lưu ý rằng số lượng ký tự có thể được lưu trữ trong cột của bạn sẽ phụ thuộc vào mã hóa ký tự .
A TEXT column with a maximum length of 255 (28 – 1) characters. The effective maximum length is less if the value contains multi-byte characters.
Xem câu trả lời của Ankan để biết thêm chi tiết.
Mở rộng cùng một câu trả lời
ĐÂY LÀ BẢNG DỰ ÁN ROUGH CHO CÁC QUYẾT ĐỊNH NHANH CHÓNG!
xx
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
Vui lòng tham khảo câu trả lời của Chris V: https://stackoverflow.com/a/35785869/1881812
TINYTEXT
đếm 1 byte + 8 byte so với kích thước bản ghi, trong khi đó VARCHAR(255)
đếm từ 1 byte + 255 byte đến 2 byte + 1020 byte (4 byte ký tự UTF-8) so với kích thước bản ghi.
Vượt lên thách thức của @ Ankan-Zerob, đây là ước tính của tôi về độ dài tối đa có thể được lưu trữ trong mỗi loại văn bản được đo bằng từ :
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
Trong tiếng Anh , 4,8 chữ cái trên mỗi từ có thể là mức trung bình tốt (ví dụ norvig.com/mayzner.html ), mặc dù độ dài từ sẽ thay đổi tùy theo tên miền (ví dụ: ngôn ngữ nói so với giấy tờ học thuật), vì vậy không có điểm nào quá chính xác. Tiếng Anh chủ yếu là các ký tự ASCII byte đơn, với các ký tự nhiều byte rất thường xuyên, rất gần với một byte mỗi chữ cái. Một ký tự phụ phải được phép cho các khoảng trắng giữa các từ, vì vậy tôi đã làm tròn xuống từ 5,8 byte mỗi từ. Các ngôn ngữ có nhiều dấu như tiếng Ba Lan sẽ lưu trữ ít từ hơn một chút, ví dụ như tiếng Đức có từ dài hơn.
Các ngôn ngữ yêu cầu các ký tự nhiều byte như tiếng Hy Lạp, tiếng Ả Rập, tiếng Do Thái, tiếng Hindi, tiếng Thái, v.v. thường yêu cầu hai byte cho mỗi ký tự trong UTF-8. Đoán 5 ký tự mỗi từ, tôi đã làm tròn từ 11 byte mỗi từ.
Kịch bản CJK (Hanzi, Kanji, Hiragana, Katakana, v.v.) Tôi không biết gì về; Tôi tin rằng các ký tự chủ yếu yêu cầu 3 byte trong UTF-8 và (với sự đơn giản hóa lớn) chúng có thể được coi là sử dụng khoảng 2 ký tự cho mỗi từ, vì vậy chúng sẽ ở đâu đó giữa hai ký tự kia. (Các tập lệnh CJK có thể yêu cầu lưu trữ ít hơn bằng UTF-16, tùy thuộc).
Điều này là tất nhiên bỏ qua chi phí lưu trữ, vv