एक प्रोडक्शन डेटाबेस डंप आसानी से दसियों गीगाबाइट तक पहुँच सकता है। जिस पल आप इसे एक सामान्य टेक्स्ट एडिटर में खोलने की कोशिश करते हैं, आपके Mac का पंखा तेज़ हो जाता है, बीचबॉल दिखने लगता है, और आखिरकार ऐप बंद हो जाता है — कभी-कभी दूसरी विंडो का असहेजा काम भी अपने साथ ले जाता है।
एडिटर बड़े डंप पर क्यों अटकते हैं
VS Code, TextEdit, Sublime Text और इनके जैसे टूल पूरी फ़ाइल को मेमोरी में लोड करने के लिए बनाए गए हैं ताकि वे तुरंत स्क्रॉल, सर्च और हाइलाइट कर सकें। यह 2 MB की सोर्स फ़ाइल के लिए ठीक है। 40 GB के डंप के लिए इसका मतलब है कि एडिटर 40 GB (साथ ही अपने आंतरिक डेटा स्ट्रक्चर के लिए अतिरिक्त) RAM में आवंटित करने की कोशिश करता है।
आपके Mac में 16 या 32 GB है। फ़ाइल के पूरी तरह लोड होने से बहुत पहले, सिस्टम की फ़िज़िकल मेमोरी खत्म हो जाती है, डिस्क पर स्वैपिंग शुरू हो जाती है, और सब कुछ ठप पड़ जाता है। अधिकांश एडिटर तो सीधे मना ही कर देते हैं: VS Code पूर्ण एडिटर के लिए फ़ाइलों को लगभग 50 MB तक सीमित रखता है और एक सीमित मोड में चला जाता है, TextEdit बस अटक जाता है, और Sublime तब तक आवंटित करता रहता है जब तक क्रैश न हो जाए। अगर फ़ाइल खुल भी जाए, तो हर कीस्ट्रोक पर सिंटैक्स हाइलाइटिंग और सर्च गीगाबाइट को फिर से स्कैन करेंगे।
मूल समस्या: ये टूल पूरे दस्तावेज़ तक रैंडम एक्सेस मानते हैं। एक डंप को इसकी ज़रूरत नहीं है — यह स्टेटमेंट की एक क्रमिक सूची है। आपको बस इसके ज़रिए स्ट्रीम करने की ज़रूरत है।
कमांड-लाइन का तरीका
आपके Mac पर मौजूद Unix टूल पहले से ही स्ट्रीम करते हैं, इसलिए वे कभी पूरी फ़ाइल लोड नहीं करते। ये क्लासिक पहला सहारा हैं:
# पूरी फ़ाइल खोले बिना पहली और आखिरी लाइनें झाँकें head -n 50 dump.sql tail -n 50 dump.sql # डंप को 100 MB के हिस्सों में विभाजित करें, नाम part_aa, part_ab, ... split -b 100m dump.sql part_ # दो मार्करों के बीच एक टेबल का ब्लॉक निकालें sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql
यह काम करता है, लेकिन यह नाज़ुक और थकाऊ है। split -b कच्ची बाइट सीमाओं पर काटता है, इसलिए यह किसी INSERT स्टेटमेंट के बीचोंबीच से काट देगा — परिणामी हिस्से अपने आप में मान्य SQL नहीं होते। sed रेंज ट्रिक उन सटीक मार्करों पर निर्भर करती है जो एक खास डंप टूल उत्पन्न करता है; MySQL संस्करण बदलें या PostgreSQL पर स्विच करें और पैटर्न मेल खाना बंद कर देता है। और इनमें से कोई भी आपको यह नज़ारा नहीं देता कि फ़ाइल में वास्तव में क्या है — आप अंदाज़ा लगाते रहते हैं कि 30 GB वाली टेबल कौन-सी है, इससे पहले कि आप उसे लक्ष्य भी बना सकें।
इसे DumpCleaner के साथ खोलें और फ़िल्टर करें
DumpCleaner ठीक इसी फ़ाइल आकार के लिए बनाया गया था। यह डंप को उसी तरह स्ट्रीम करता है जैसे कमांड लाइन करती है, लेकिन यह SQL संरचना को समझता है, इसलिए आपको एक वास्तविक टेबल सूची और सुरक्षित, स्टेटमेंट-अवगत आउटपुट मिलता है:
- फ़ाइल को अंदर खींचें। DumpCleaner डंप को ~1 MB के हिस्सों में स्ट्रीम करके खोलता है — एक 50 GB फ़ाइल लगभग 50 MB RAM के साथ खुलती है, इसलिए कुछ भी नहीं जमता।
- हर टेबल देखें। यह डंप को स्कैन करता है और प्रत्येक टेबल को उसके आकार के साथ सूचीबद्ध करता है, इसलिए आप तुरंत पहचान लेते हैं कि कौन-सी टेबल फ़ाइल को फुला रही है।
- जो नहीं चाहिए उसे अचयनित करें। विशाल लॉग, सेशन या एनालिटिक्स टेबल को अनटिक करें। DumpCleaner पूरे स्टेटमेंट को अखंड रखता है — कोई आधा-कटा INSERT नहीं।
- एक्सपोर्ट करें। एक नई, छोटी
.sqlफ़ाइल लिखें जो आखिरकार आराम से खुलती और इम्पोर्ट होती है। आपकी मूल फ़ाइल कभी संशोधित नहीं होती।
चूँकि यह 50 GB और उससे बड़े डंप को स्थिर मेमोरी के साथ प्रोसेस करता है, आपको अपने Mac की RAM के बारे में सोचना ही नहीं पड़ता। और चूँकि यह स्रोत को पढ़ता है और एक अलग आउटपुट लिखता है, जिस डंप से आपने शुरुआत की थी वह बिल्कुल वैसा ही रहता है।
वे डंप खोलें जो आपका एडिटर नहीं खोल सकता
DumpCleaner किसी भी आकार के SQL डंप को स्थिर मेमोरी के साथ स्ट्रीम करता है — कोई क्रैश नहीं, कोई स्वैप नहीं, कोई इंतज़ार नहीं। 50 GB की फ़ाइल खींचें, जो टेबल नहीं चाहिए उन्हें हटाएँ, एक छोटी फ़ाइल एक्सपोर्ट करें। नेटिव macOS और iPadOS ऐप, एकमुश्त खरीद।
App Store पर डाउनलोड करेंअक्सर पूछे जाने वाले प्रश्न
DumpCleaner कितनी बड़ी SQL डंप संभाल सकता है?
कोई निश्चित सीमा नहीं है। यह फ़ाइल को छोटे हिस्सों में एक स्ट्रीम के रूप में प्रोसेस करता है, इसलिए 50 GB और उससे बड़े डंप छोटे डंप की तरह ही काम करते हैं — आकार आपकी डिस्क से बंधा है, आपकी RAM से नहीं।
क्या DumpCleaner पूरी फ़ाइल को RAM में लोड करता है?
नहीं। एक टेक्स्ट एडिटर के विपरीत, यह डंप को छोटे हिस्सों में पढ़ता है और मेमोरी को लगभग 50 MB पर लगभग स्थिर रखता है, चाहे फ़ाइल 200 MB की हो या 50 GB की।
क्या मैं टेबल के अनुसार डंप को विभाजित कर सकता हूँ?
हाँ। split द्वारा बाइट सीमाओं पर आँख मूँदकर काटने के बजाय, DumpCleaner टेबल संरचना को समझता है। जो टेबल नहीं चाहिए उन्हें अचयनित करें और केवल उन्हीं के साथ एक साफ़ फ़ाइल एक्सपोर्ट करें जिन्हें आप रखते हैं।
क्या DumpCleaner मेरी मूल फ़ाइल को संशोधित करता है?
नहीं। स्रोत डंप केवल पढ़ा जाता है — DumpCleaner हमेशा एक नई फ़ाइल लिखता है, इसलिए आपकी मूल फ़ाइल अछूती रहती है।
अपने एडिटर से जूझना बंद करें
विशाल डंप को अंदर खींचें, जो टेबल नहीं चाहिए उन्हें हटाएँ, एक ऐसी फ़ाइल एक्सपोर्ट करें जो वास्तव में खुलती है। DumpCleaner किसी भी आकार को स्थिर मेमोरी के साथ संभालता है।
App Store पर डाउनलोड करें