2013-03-05 30 views
7

Tôi đang thiết kế cơ sở dữ liệu để lưu trữ tài liệu. Một số tài liệu này có tốc độ chỉ hơn 64kb và không có gì lớn hơn 128kb. Có vẻ như truy vấn duy nhất của tôi là chỉ định kiểu văn bản của tôi là MEDIUMTEXT có kích thước tối đa là 16MB. Điều đó dường như quá mức cho những gì tôi đang làm đặc biệt vì tôi đang lưu trữ có lẽ một trăm tài liệu mỗi ngày. Tôi đoán câu hỏi tôi có là liệu tôi có trải qua một hit hiệu suất hay không vì MEDIUMTEXT lớn hơn TEXT nhiều. Tôi không biết nhiều về nội bộ MySQL để biết nếu có một số vấn đề phân bổ lạ trên đĩa hoặc bộ nhớ sẽ trở lại để cắn tôi. Tất nhiên chúng tôi chỉ có thể làm tất cả trong một cái gì đó hiện đại như MongoDB nhưng tôi không thể có được một dấu hiệu về điều đó. :-(
Trong trường hợp ai đó đang phải vật lộn với điều này trong tương lai, tôi nghĩ rằng tôi muốn lưu ý các loại văn bản trong MySQL và kích thước tối đa của họ để tham khảo.Các loại văn bản MySQL và sử dụng kích thước lớn hơn. Nó có hiệu quả không?

TINYTEXT 256 bytes 
TEXT 65,535 bytes ~64kb 
MEDIUMTEXT 16,777,215 bytes ~16MB 
LONGTEXT 4,294,967,295 bytes ~4GB 

Bất cứ lời khuyên bất cứ ai đã sẽ được đánh giá. Janie

Trả lời

9

Từ MySQL's documentation on storage requirements có vẻ như bạn không cần phải lo lắng quá nhiều về việc sử dụng một loại văn bản dài hơn;.

L đại diện cho chiều dài thực tế tính bằng byte của một giá trị chuỗi cho
...
Ví dụ: bộ nhớ cho giá trị MEDIUMTEXT yêu cầu L byte để lưu trữ giá trị cộng với ba byte để lưu trữ độ dài của giá trị.

Nói cách khác, văn bản trung bình không yêu cầu độ dài tối đa cho mỗi giá trị được lưu trữ, nó chỉ yêu cầu độ dài dữ liệu bạn muốn lưu trữ + 3 byte.

+1

Về cơ bản, bạn có thể nghĩ loại TEXT là "con trỏ" cho tệp trên đĩa. Các văn bản khác nhau (MEDIUMTEXT, TINYTEXT, vv) được sử dụng làm chiến lược lưu trữ cho cơ sở dữ liệu. – sleblanc

+0

Trả lời nghiệp cho Joachim! Tôi thực sự đánh giá cao câu trả lời này! –

Các vấn đề liên quan