2012-01-20 67 views
10

Đây là một theo dõi cho câu hỏi trước đây của tôi: Blob and Storage RequirementMYSQL TINYBLOB vs LONGBLOB

tôi đã làm một số thử nghiệm sử dụng SHOW TABLE STATUS, và phát hiện ra rằng tổng dung lượng đĩa sử dụng trên thực tế chỉ phụ thuộc vào kích thước của file thực tế tải lên cơ sở dữ liệu và không phải trên loại (ví dụ: TINYBLOB hoặc LONGBLOG) của cột.

Vì vậy, nếu đó không phải là trường hợp thì sự khác biệt nào sẽ xảy ra khi chúng tôi chọn một sự khác biệt so với các loại BLOB khác?

Trả lời

21

Mỗi kích thước của trường blob dự trữ thêm byte để giữ thông tin kích thước. Một longblob sử dụng 4 + n byte dung lượng lưu trữ, trong đó n là kích thước thực tế của blob bạn đang lưu trữ. Nếu bạn chỉ bao giờ lưu trữ (nói) 10 byte dữ liệu blob, bạn sẽ sử dụng hết 14 byte không gian.

Khi so sánh, một tinyblob sử dụng 1 + n byte, vì vậy 10 byte của bạn sẽ chiếm 11 byte không gian, tiết kiệm 3 byte.

3 byte không nhiều khi chỉ xử lý một vài bản ghi, nhưng khi số lượng bản ghi DB tăng lên, mỗi byte được lưu là một điều tốt.

+0

Chính xác những gì tôi muốn biết. Chấp nhận (thực ra tôi sẽ phải chờ 8 phút). – jombie

+6

Phụ lục nhanh cho câu trả lời này: 3 byte được lưu không chỉ tiết kiệm dung lượng trên đĩa. Nó cũng ảnh hưởng đến mức độ phù hợp trong bộ nhớ, trong bộ nhớ cache vv để nó có thể có tác động đến hiệu suất. –

+0

@MarcB, Câu trả lời của bạn có đề cập đến động cơ InnoDB hay động cơ MyISAM không? Ngoài ra, bạn có một nguồn/trích dẫn? – Pacerier