2010-03-30 4 views
14

मेरे पास एक SQLite डेटाबेस है।SQLite डेटाबेस को साफ़ करने का आकार क्यों कम नहीं होता है?

मैंने टेबल बनाए और उन्हें काफी मात्रा में डेटा भर दिया।

फिर मैंने टेबल को हटाने और पुनर्स्थापित करके डेटाबेस को साफ़ कर दिया। मैंने पुष्टि की कि सभी डेटा हटा दिए गए हैं और SQLite प्रशासक का उपयोग करके उन्हें देखकर टेबल खाली थे।

समस्या यह है कि डेटाबेस फ़ाइल (* .db3) का आकार साफ़ होने के बाद ही बना रहता है।

यह निश्चित रूप से वांछनीय नहीं है क्योंकि मैं इसे साफ़ करने के बाद डेटा द्वारा उठाए गए स्थान को वापस प्राप्त करना चाहता हूं।

क्या कोई भी इसी तरह का अवलोकन करता है और/या जानता है कि क्या हो रहा है?

इसके बारे में क्या किया जा सकता है?

+1

'समाप्ति लेन-देन पर गौर करना चाहिए था, वैक्यूम; ' – PHPst

उत्तर

24

here से:

जब एक वस्तु (टेबल, सूचकांक, ट्रिगर या दृश्य) डेटाबेस से हटा दिया गया है, यह खाली जगह के पीछे छोड़ देता है। अगली बार डेटाबेस में नई जानकारी को जोड़ा जाने पर यह रिक्त स्थान पुन: उपयोग किया जाएगा। लेकिन इस बीच, डेटाबेस फ़ाइल कड़ाई से जरूरी से बड़ी हो सकती है। साथ ही, लगातार आवेषण, अद्यतन, और हटावट डेटाबेस में जानकारी को खंडित करने का कारण बन सकती है - एक ही स्थान पर एक साथ क्लस्टर्ड की बजाय डेटाबेस फ़ाइल में सभी को खरोंच कर दिया जाता है।

VACUUM कमांड अपनी सामग्री को एक अस्थायी डेटाबेस फ़ाइल में कॉपी करके और प्रतिलिपि से मूल डेटाबेस फ़ाइल को पुनः लोड करके मुख्य डेटाबेस को साफ़ करता है। यह मुक्त पृष्ठों को समाप्त करता है, तालिका डेटा संगत होने के लिए संरेखित करता है, और अन्यथा डेटाबेस फ़ाइल संरचना को साफ़ करता है।

3

डेटाबेस आकार पानी के निशान जैसे काम करते हैं उदा। पानी बढ़ जाता है, तो पानी के निशान तक जाता है, जब पानी receeds वाटर मार्क रहता है जहां यह

आप सिकुड़ डेटाबेस

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