सारांश :इस ट्यूटोरियल में, हम बताएंगे कि आपको SQLite VACUUM
. का उपयोग करने की आवश्यकता क्यों है? कमांड और डेटाबेस फ़ाइल को अनुकूलित करने के लिए इसका उपयोग करने का तरीका दिखाएं।
आपको SQLite की आवश्यकता क्यों है VACUUM
आदेश
सबसे पहले, जब आप डेटाबेस ऑब्जेक्ट जैसे टेबल, व्यू, इंडेक्स और ट्रिगर छोड़ते हैं या टेबल से डेटा हटाते हैं, तो डेटाबेस फ़ाइल का आकार अपरिवर्तित रहता है। क्योंकि SQLite केवल हटाए गए ऑब्जेक्ट को निःशुल्क के रूप में चिह्नित करता है और इसे भविष्य के उपयोग के लिए सुरक्षित रखता है। परिणामस्वरूप, डेटाबेस फ़ाइल का आकार हमेशा आकार में बढ़ता है।
दूसरा, जब आप तालिकाओं से डेटा सम्मिलित करते हैं या हटाते हैं, तो अनुक्रमणिका और तालिकाएँ खंडित हो जाती हैं, विशेष रूप से उस डेटाबेस के लिए जिसमें बड़ी संख्या में सम्मिलित, अद्यतन और हटाए जाते हैं।
तीसरा, इन्सर्ट, अपडेट और डिलीट ऑपरेशंस अलग-अलग डेटाबेस पेजों के भीतर अप्रयुक्त डेटा ब्लॉक बनाते हैं। यह उन पंक्तियों की संख्या को कम करता है जिन्हें एक पृष्ठ में संग्रहीत किया जा सकता है। इसलिए, यह एक टेबल रखने के लिए पृष्ठों की संख्या बढ़ाता है। इस वजह से, यह तालिका के लिए संग्रहण ओवरहेड बढ़ाता है, पढ़ने/लिखने में अधिक समय लेता है, और कैश प्रदर्शन को कम करता है।
SQLite VACUUM
प्रदान करता है उपरोक्त तीनों मुद्दों को हल करने का आदेश।
SQLite पहले डेटाबेस फ़ाइल के भीतर डेटा को अस्थायी डेटाबेस में कॉपी करता है। यह ऑपरेशन डेटाबेस ऑब्जेक्ट्स को डीफ़्रैग्मेन्ट करता है, रिक्त स्थान की उपेक्षा करता है, और अलग-अलग पेजों को फिर से पैक करता है। फिर, SQLite अस्थायी डेटाबेस फ़ाइल की सामग्री को मूल डेटाबेस फ़ाइल में वापस कॉपी करता है। मूल डेटाबेस फ़ाइल को अधिलेखित कर दिया गया है।
क्योंकि VACUUM
कमांड डेटाबेस का पुनर्निर्माण करता है, आप इसका उपयोग कुछ डेटाबेस-विशिष्ट कॉन्फ़िगरेशन पैरामीटर जैसे पृष्ठ आकार, पृष्ठ प्रारूप और डिफ़ॉल्ट एन्कोडिंग को बदलने के लिए कर सकते हैं। ऐसा करने के लिए, आप pragma का उपयोग करके नए मान सेट करें और फिर डेटाबेस को वैक्यूम करें।
एसक्यूलाइट VACUUM
आदेश
VACUUM
कमांड पंक्तिबद्ध मानों को छोड़कर डेटाबेस की सामग्री को नहीं बदलता है। अगर आप INTEGER PRIMARY KEY
. का उपयोग करते हैं कॉलम, VACUUM
उस कॉलम के मानों को नहीं बदलता है। हालांकि, यदि आप बिना उपनाम वाली पंक्ति का उपयोग करते हैं, तो VACUUM
कमांड पंक्तिबद्ध मानों को रीसेट कर देगा। पंक्तिबद्ध मानों को बदलने के अलावा, VACUUM
कमांड शुरुआत से इंडेक्स भी बनाता है।
VACUUM
. करना एक अच्छा अभ्यास है समय-समय पर कमांड करें, खासकर जब आप किसी डेटाबेस से बड़ी टेबल या इंडेक्स हटाते हैं।
यह नोट करना महत्वपूर्ण है कि VACCUM
कमांड को मूल फ़ाइल और कॉपी को रखने के लिए स्टोरेज की आवश्यकता होती है। साथ ही, VACUUM
कमांड को डेटाबेस फ़ाइल तक विशेष पहुंच की आवश्यकता होती है। दूसरे शब्दों में, VACUUM
यदि डेटाबेस में एक लंबित SQL कथन या एक खुला लेनदेन है, तो कमांड सफलतापूर्वक नहीं चलेगा।
वर्तमान में, संस्करण 3.9.2 के अनुसार, आप VACUUM
. चला सकते हैं main
. पर कमांड करें डेटाबेस, संलग्न डेटाबेस फ़ाइल नहीं।
भले ही SQLite ऑटो-वैक्यूम मोड को सक्षम करता है जो कुछ सीमाओं के साथ वैक्यूम प्रक्रिया को स्वचालित रूप से ट्रिगर करता है। VACUUM
. चलाना एक अच्छा अभ्यास है मैन्युअल रूप से आदेश दें।
SQLite कैसे चलाएं VACUUM
आदेश
निम्नलिखित दिखाता है कि VACUUM
को कैसे चलाया जाता है आदेश:
VACUUM;
Code language: SQL (Structured Query Language) (sql)
सुनिश्चित करें कि कमांड चलाते समय कोई खुला लेन-देन न हो।
निम्नलिखित कथन पूर्ण ऑटो-वैक्यूम मोड को सक्षम करता है:
PRAGMA auto_vacuum = FULL;
Code language: SQL (Structured Query Language) (sql)
वृद्धिशील निर्वात को सक्षम करने के लिए, आप निम्नलिखित कथन का उपयोग करते हैं:
PRAGMA auto_vacuum = INCREMENTAL;
Code language: SQL (Structured Query Language) (sql)
निम्नलिखित कथन ऑटो-वैक्यूम मोड को निष्क्रिय कर देता है:
PRAGMA auto_vacuum = NONE;
Code language: SQL (Structured Query Language) (sql)
VACUUM
एक INTO
. के साथ खंड
यहाँ VACUUM
का सिंटैक्स दिया गया है INTO
. के साथ खंड:
VACUUM schema-name INTO filename;
Code language: SQL (Structured Query Language) (sql)
VACUUM
INTO
. के साथ स्टेटमेंट क्लॉज मूल डेटाबेस फ़ाइल को अपरिवर्तित रखता है और निर्दिष्ट फ़ाइल नाम के साथ एक नया डेटाबेस बनाता है। नए डेटाबेस में मूल डेटाबेस के समान तार्किक सामग्री होगी, लेकिन पूरी तरह से वैक्यूम किया जाएगा।
filename
INTO
. में क्लॉज कोई भी SQL एक्सप्रेशन हो सकता है जो एक स्ट्रिंग का मूल्यांकन करता है। यह उस फ़ाइल का पथ होना चाहिए जो मौजूद नहीं है या किसी खाली फ़ाइल का, या VACUUM INTO
होना चाहिए आदेश के परिणामस्वरूप त्रुटि होगी।
VACUUM
लाइव डेटाबेस की बैकअप प्रतियां बनाने के लिए कमांड बहुत उपयोगी है। यह लेन-देन सुरक्षित है, जो उत्पन्न डेटाबेस मूल डेटाबेस का एक सुसंगत स्नैपशॉट है। हालांकि, अगर एक अनियोजित शटडाउन या पावर लॉस कमांड को बाधित करता है, तो उत्पन्न डेटाबेस दूषित हो सकता है।
निम्नलिखित कथन VACUUM INTO
. का उपयोग करता है फ़ाइल नाम chinook_backup.db
. के साथ एक नया डेटाबेस बनाने के लिए कमांड जिसका डेटा main
. से कॉपी किया गया है chinook
. की स्कीमा डेटाबेस:
VACUUM main INTO 'c:\sqlite\db\chinook_backup.db';
Code language: JavaScript (javascript)
इस ट्यूटोरियल में, आपने सीखा है कि आपको SQLite VACUUM
. का उपयोग करने की आवश्यकता क्यों है? डेटाबेस को ऑप्टिमाइज़ करने के लिए कमांड और इसे कैसे चलाना है।