2012-12-17 12 views
5

मैं जावा में एक HSQLDB डेटाबेस का उपयोग कर रहा हूं जो बीएलओबी के रूप में परिभाषित कॉलम में फ़ाइलों को संग्रहीत करता है।एचएसक्यूएलडीबी और .lobs फ़ाइल का आकार

जब मैं एक तालिका पंक्ति एक फ़ाइल/ब्लॉब के साथ मेरी मेज पर .lobs फ़ाइल बढ़ जाती है फ़ाइल/ब्लॉब के आकार में जोड़ें। जब मैं अपनी तालिका में एक और फाइल जोड़ता हूं तो यह फिर से आकार में बढ़ जाता है (2 एक्स बीएलओबी आकार)।

तो, मैं एक परीक्षण विधि है जो 10 बार iterates और मेरी मेज पर एक ही फाइल लिखते हैं और सही डालने के बाद इसे हटा देता है कार्यान्वित किया।

अब, मेरी .lobs फ़ाइल 10 x फ़ाइल आकार है ... भले ही मैं सभी तालिका पंक्तियों जो फ़ाइल में हटा दिया है।

मैंने चेकपॉइंट डेफ्रैग निष्पादित करने का प्रयास किया है लेकिन कुछ भी नहीं होता है। .lobs फ़ाइल एक ही फ़ाइल आकार रहते हैं।

यह मुझे मेरे webapp मैं बना रहा हूं मेरी डेटाबेस के लिए फ़ाइलों के बहुत सारे लिखने के लिए और यहां तक ​​कि अगर कुछ समय के बाद फ़ाइल (ब्लॉब) के साथ तालिका पंक्तियों हटाया नहीं जाएगा .lobs फ़ाइल बढ़ा या जाएगा जा रहा है के बाद से चिंता एक ही आकार में रहें और आखिर में मेरी सभी डिस्क स्पेस खाएं।

मैं कुछ सेटिंग याद आ रही हूँ या इस HSQLDB और BLOBs से अपेक्षित व्यवहार है?

बहुत बहुत धन्यवाद!

सधन्यवाद, एंड्रियास

उत्तर

1

यह सामान्य है।

सभी हटाए गए लॉब रिक्त स्थान रिकॉर्ड किए गए हैं। चेककॉइंट के बाद, यदि आप नए लॉब्स डालते हैं तो रिक्त स्थान का पुन: उपयोग किया जाता है।

एक उत्पादन डेटाबेस में सम्मिलित करने और हटाने के पुनरावर्ती चक्र होते हैं। लॉग रन में, .lobs फ़ाइल का आकार डेटाबेस में लॉब्स के वास्तविक आकार से बहुत अधिक मात्रा में नहीं होगा।

अद्यतन:

जब तक एक चौकी डाटा वसूली मामले में एक सिस्टम क्रैश है वहाँ अनुमति है .lobs फ़ाइल विकसित करने के लिए कारण।

एचएसक्यूएलडीबी संस्करण 2.3.0 और बाद के संस्करण चेकबॉइंट पर .lobs फ़ाइल को छोटा कर देते हैं यदि लॉब्स हटाने के बाद फ़ाइल के अंत में खाली स्थान होता है।

+0

हम्म, मैंने एक और परीक्षण किया। एक बीएलओबी डाला और इसे हटाने के बाद सही। क्या यह 1000 पुनरावृत्तियों और बीएलओबी आकार के लिए ~ 8 एमबी था। परिणाम: ~ 9 जीबी घटना की एक .lobs फ़ाइल हालांकि मेरे डेटाबेस में कोई डेटा नहीं है। – andreas78

+0

... जारी रखा ... मैं बादल में अपने सर्वर स्लॉट खरीद रहा हूँ और डिस्क के हर एमबी मुझे पैसे की लागत मैं वास्तव में .lobs फ़ाइल डेटा के 9 जीबी आवंटन जब मेरे डेटाबेस खाली है पसंद नहीं है। मैं अपना सरल दिमाग। Lobs फ़ाइल इस परिदृश्य में 8 एमबी से अधिक नहीं होगा क्योंकि मैं बीएलओबी जोड़ता हूं और फिर उसी बीएलओबी को हटा देता हूं। .lobs फ़ाइल को 8 एमबी से अधिक क्यों बढ़ाएं जब मैं कभी भी 8 एमबी से अधिक स्टोर नहीं करता हूं? – andreas78

+0

ठीक उसी परीक्षण सुइट का उपयोग करके एच 2 मैं कह सकते हैं निम्नलिखित चलाने के बाद: एच 2 db-फ़ाइल में 1000 x 8 MB फ़ाइलें डालकर लिए अधिकतम ~ 1 जीबी का उपयोग करता है। एच 2 डीबी-फाइल में ~ 68 एमबी उपयोग हटाने के बाद जोड़ने और सही होने पर। एच 2 डेटाबेस/टेबल छोड़ते समय डीबी-फ़ाइल आकार को कम कर देता है। यह मुझे सोचता है कि यदि डिस्क स्थान उपयोग को कम करना चाहते हैं तो H2 बेहतर विकल्प है। – andreas78

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