2012-10-17 7 views
12

मैं wal_checkpoint (पूर्ण) चलाने के बाद सीपी कमांड का उपयोग कर SQLite डीबी का बैकअप ले रहा हूं। डीबी का उपयोग वाल मोड में किया जा रहा है, इसलिए मेरे फ़ोल्डर में -shm और -wal जैसी अन्य फाइलें हैं। जब मैं wal_checkpoint (पूर्ण) चलाता हूं, तो WAL फ़ाइल में परिवर्तन डेटाबेस के लिए प्रतिबद्ध हो जाते हैं। मैं सोच रहा हूं कि चेक-इन चलाने के बाद -वाल और -एसएम फाइलों को हटा दिया गया है या नहीं। यदि नहीं, तो उनमें क्या शामिल है?-shm और -wal फाइलें SQLite डीबी

मुझे पता है कि मेरी बैकअप प्रक्रिया अच्छी नहीं है क्योंकि मैं SQLite बैकअप API का उपयोग नहीं कर रहा हूं। यह मेरे कोड में एक बग है।

क्या कोई भी सुझाव दे सकता है कि चेक-आउट चलाने के बाद -शैम और -वाल फ़ाइलों में कौन सी सामग्री होती है।

प्रदान किया गया कोई भी लिंक उपयोगी होगा।

धन्यवाद

उत्तर

14

कई सामग्री के माध्यम से खोज करने के बाद, मैं नीचे दिए गए अंक नीचे सूचीबद्ध करूंगा:
1. -shm फ़ाइल में -wal फ़ाइल के लिए एक अनुक्रमणिका है। -shm पढ़ने -वाल फ़ाइल के प्रदर्शन में सुधार करता है।
2. यदि -shm फ़ाइल हटा दी जाती है, तो यह डेटाबेस के अगले पहुंच के दौरान फिर से बनाई जाती है।
3. यदि चेकपॉइंट चलाया जाता है, -वाल फ़ाइल हटा दी जा सकती है।

सुरक्षित बैकअप
1. बैकअप लेने के लिए SQLite बैकअप फ़ंक्शंस का उपयोग करने की अनुशंसा की जाती है। SQLite लाइब्रेरी में एक ऑनलाइन डेटाबेस के बैकअप लेने के लिए पर्याप्त सक्षम कार्य हैं।
2. यदि आप (1) का उपयोग नहीं करना चाहते हैं, तो डेटाबेस हैंडल को बंद करना सबसे अच्छा तरीका है। यह डेटाबेस फ़ाइल की एक स्वच्छ और सुसंगत स्थिति सुनिश्चित करता है, यह -shm और -wal फ़ाइलों को भी हटा देता है। सीपी, एसपीपी इत्यादि का उपयोग करके बैकअप लेने के लिए सामान्य प्रतिलिपि बनाई जा सकती है
3. यदि SQLite डेटाबेस फ़ाइल को नेटवर्क पर प्रसारित करने का इरादा है, तो वैक्यूम कमांड चेकपॉइंट के बाद चलाया जाना चाहिए। यह डेटाबेस फ़ाइल में विखंडन को हटा देगा जिससे इसके आकार को कम किया जा सके, ताकि आप नेटवर्क के माध्यम से कम डेटा स्थानांतरित कर सकें। यह केवल एक सुझाव है।
दो अच्छा लाइनों
http://www.dbtalks.com/uploadfile/ca5be5/write-ahead-logging-concept-in-sqlite/
http://www.mentby.com/Group/sqlite-users/database-disk-image-is-malformed-37x.html

3

-shm फ़ाइल किसी भी स्थायी डेटा नहीं है।

जब अंतिम कनेक्शन बंद हो जाता है, डेटाबेस स्वचालित रूप से चेकपॉइंट होता है, और -wal फ़ाइल तब हटा दी जाती है। इसका तात्पर्य है कि चेकपॉइंट के बाद, और यदि कोई अन्य कनेक्शन मौजूद नहीं है, तो -wal फ़ाइल में कोई महत्वपूर्ण डेटा नहीं है।

यदि संभव हो, तो आपको बैकअप लेने से पहले कनेक्शन बंद करना चाहिए।

+0

नीचे देखें फ़ाइल -wal चाहेंगे चौकी चलाने के बाद कुछ भी होते हैं। विचार करें कि कनेक्शन बंद नहीं है। –

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