2012-05-18 15 views
23

मेरे पास एक कॉलम में बड़ी मात्रा में BLOB डेटा वाली तालिका है। मैं डेटा सिस्टम को डेटा डंप करने के लिए उपयोगिता लिख ​​रहा हूं। लेकिन डंपिंग से पहले, मुझे यह जांचना होगा कि डिस्क पर सभी ब्लॉब फ़ील्ड निर्यात करने के लिए डिस्क पर आवश्यक स्थान उपलब्ध है या नहीं।तालिका में बीएलओबी कॉलम के कुल डेटा आकार की गणना

कृपया तालिका में सभी ब्लॉब फ़ील्ड के आकार को प्राप्त करने के लिए एक कुशल दृष्टिकोण का सुझाव दें।

उत्तर

30

आप MySQL फ़ंक्शन OCTET_LENGTH(your_column_name) का उपयोग कर सकते हैं। अधिक जानकारी के लिए here देखें।

+9

OCTET_LENGTH() LENGTH() के लिए समानार्थी है –

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

उत्तर के लिए धन्यवाद। उपरोक्त क्वेरी द्वारा इंगित आकार डिस्क पर डंप की गई फ़ाइलों के कुल आकार से कम है। कारण क्या हो सकता है इसके बारे में कोई विचार? – jatinpreet

+1

@ जतिनप्रीत: मेरा अनुमान है कि यह फाइल सिस्टम में फाइल क्लस्टरिंग की वजह से है। उदाहरण के लिए आपकी फाइल सिस्टम फ़ाइलों के आधार पर 4 केबी के ब्लॉक में सहेजा जाएगा। यह चीजों को गोल कर सकता है। लेकिन यह सिर्फ एक अनुमान है। –

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

अफसोस की बात यह है कि यह डीबी विशिष्ट है।

Oracle में धब्बे के साथ एक मेज का कुल आकार प्राप्त करने के लिए मैं निम्नलिखित का उपयोग करें: https://blog.voina.org/?p=374

दुर्भाग्य से यह डीबी 2 में काम नहीं करता मैं अभी भी है एक विकल्प खोजने के लिए।

सरल

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

एक सही प्रश्न के रूप में सही ढंग से ब्लॉब कि आपके ब्लॉब स्तंभ में संग्रहीत किया जाता है के संदर्भ के आधार पर ब्लॉब आकार का अनुमान लगाने के लिए नहीं जा रहा है नहीं है। आपको ब्लॉब रिपोजिटरी से ब्लॉब्स के लिए डिस्क पर वास्तविक आवंटित आकार प्राप्त करना होगा।

संबंधित मुद्दे