2012-05-18 32 views
23

Tôi có một bảng với số lượng lớn dữ liệu BLOB trong một cột. Tôi đang viết một tiện ích để đưa dữ liệu vào hệ thống tệp. Nhưng trước khi bán phá giá, tôi cần phải kiểm tra xem không gian cần thiết có sẵn trên đĩa để xuất tất cả các trường blob trên bảng.Tính tổng kích thước dữ liệu của cột BLOB trong một bảng

Vui lòng đề xuất phương pháp tiếp cận hiệu quả để có được kích thước của tất cả các trường blob trong bảng.

Trả lời

30

Bạn có thể sử dụng hàm MySQL OCTET_LENGTH(your_column_name). Xem here để biết thêm chi tiết.

+9

OCTET_LENGTH() là một từ đồng nghĩa cho LENGTH() –

20
select sum(length(blob_column)) as total_size 
from your_table 
+0

Cảm ơn bạn đã trả lời. Kích thước như được chỉ ra bởi truy vấn ở trên thấp hơn tổng kích thước của các tệp được bán trên đĩa. Bất kỳ ý tưởng về những gì có thể là lý do? – jatinpreet

+1

@jatinpreet: Tôi đoán là điều này là do phân cụm tập tin trong các hệ thống tệp. Tùy thuộc vào tập tin hệ thống tập tin của bạn sẽ được lưu trong khối 4KB ví dụ. Điều đó có thể làm tròn mọi thứ. Nhưng đó chỉ là một phỏng đoán. –

2
select sum(length(blob_column_name)) from desired_tablename; 
1

Đáng buồn thay, đây là DB cụ thể nhất.

Để có được tổng kích thước của một bảng với các đốm màu trong Oracle tôi sử dụng như sau: https://blog.voina.org/?p=374

Đáng buồn là điều này không làm việc trong DB2 tôi vẫn phải tìm một sự thay thế.

Các đơn giản

select sum(length(blob_column)) as total_size 
from your_table 

không phải là một câu hỏi đúng như sẽ không ước lượng chính xác kích thước blob dựa trên tham chiếu đến blob được lưu trữ trong cột blob của bạn. Bạn phải nhận được kích thước phân bổ thực tế trên đĩa cho các blob từ kho lưu trữ blob.

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