2012-05-18 12 views
23

Bir sütunda büyük miktarda BLOB verisi olan bir tablom var. Verileri dosya sistemine dökmek için bir yardımcı program yazıyorum. Ancak dökmeden önce, tüm blob alanlarını tabloya aktarmak için diskte gerekli boşluğun olup olmadığını kontrol etmem gerekiyor.Bir tablodaki BLOB sütununun toplam veri boyutunun hesaplanması

Lütfen tablodaki tüm blob alanlarının boyutlarını almak için etkili bir yaklaşım öneriniz.

cevap

30

MySQL işlevi OCTET_LENGTH(your_column_name)'u kullanabilirsiniz. Daha fazla bilgi için here'a bakın.

+9

OCTET_LENGTH() LENGTH() ile eşanlamlıdır –

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

Cevabınız için teşekkür ederiz. Yukarıdaki sorgu ile gösterilen boyut, diskteki boşaltılan dosyaların toplam boyutundan daha düşüktür. Nedenin ne olabileceği hakkında bir fikrin var mı? – jatinpreet

+1

@jatinpreet: Tahminimce dosya sistemlerinde dosya kümelemesinden kaynaklanıyor. Dosya sistemlerinize bağlı olarak dosyalar örneğin 4 KB'lık bloklara kaydedilir. Bu şeyleri yuvarlaklaştırabilir. Ama bu sadece bir tahmin. –

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

Ne yazık ki bu DB'ye en iyi şekilde özgüdür. Bir alternatif bulmak hala var Ne yazık ki bu DB2 çalışmaz https://blog.voina.org/?p=374

:

aşağıdaki kullanmak Oracle lekeler içeren bir tablo toplam boyutunu almak için.

basit

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

doğru blob sütununda saklanır blob referans temelinde damla boyutunu tahmin etmeyecek şekilde doğru bir sorgu değil. Blob deposundaki blob için gerçek ayrılmış boyutu disk üzerinde almanız gerekir.

İlgili konular