मेरे पास PostgreSQL 9.2 पर एक डेटाबेस है जिसमें लगभग 70 तालिकाओं के साथ एक मुख्य स्कीमा है और प्रत्येक 30-तालिकाओं के समान रूप से संरचित प्रति-ग्राहक स्कीमाओं की एक चर संख्या है। क्लाइंट स्कीमा में मुख्य स्कीमा को संदर्भित करने वाली विदेशी कुंजियाँ होती हैं, न कि दूसरे तरीके से।
मैंने बस पिछले संस्करण से लिए गए कुछ वास्तविक डेटा के साथ डेटाबेस को भरना शुरू किया। डीबी लगभग 1.5 जीबी तक पहुंच गया था (यह हफ्तों के भीतर कई 10 जीबी तक बढ़ने की उम्मीद है) जब मुझे मुख्य स्कीमा में एक बहुत ही केंद्रीय तालिका में एक बल्क डिलीट करना था। सभी संबंधित विदेशी कुंजियों को DELETE CASCADE पर चिह्नित किया गया है।
यह कोई आश्चर्य की बात नहीं थी कि इसमें लंबा समय लगेगा, लेकिन 12 घंटे के बाद यह स्पष्ट हो गया कि मैं शुरू करने से बेहतर था, डीबी को छोड़ कर और फिर से प्रवास शुरू किया। लेकिन क्या होगा अगर मुझे इस ऑपरेशन को बाद में दोहराने की जरूरत है जब डीबी जीवित है और बहुत बड़ा है? क्या वैकल्पिक, तेज तरीके हैं?
क्या यह बहुत तेजी से होगा यदि मैंने एक स्क्रिप्ट लिखी है जो कि निर्भर तालिकाओं को ब्राउज़ करेगी, केंद्रीय तालिका से सबसे दूर मेज पर शुरू करना, तालिका द्वारा आश्रित पंक्तियों की तालिका को हटाना?
एक महत्वपूर्ण विवरण यह है कि कुछ तालिकाओं पर ट्रिगर होते हैं।