मेरे पास एक डेटा संरचना है जो इस तरह दिखती है:PostgreSQL को डेटा के * विशाल * भाग कैसे आयात करें?
Model Place
primary key "id"
foreign key "parent" -> Place
foreign key "neighbor" -> Place (symmetryc)
foreign key "belongtos" -> Place (asymmetric)
a bunch of scalar fields ...
मेरे पास मॉडल तालिका में 5 मिलियन से अधिक पंक्तियां हैं, और मुझे दो विदेशी कुंजी तालिकाओं में से प्रत्येक में ~ 50 मिलियन पंक्तियां डालने की आवश्यकता है। मेरे पास SQL
फ़ाइलें हैं जो इस तरह दिखती हैं:
INSERT INTO place_belongtos (from_place_id, to_place_id) VALUES (123, 456);
और वे 7 जीबी प्रत्येक के बारे में हैं। समस्या यह है कि, जब मैं psql < belongtos.sql
करता हूं, तो मुझे अपने एएमडी Turion64x2 CPU पर ~ 4 मिलियन पंक्तियों को आयात करने के लिए 12 घंटे के बारे में लगता है। ओएस Gent Gent ~ amd64 है, PostgreSQL संस्करण 8.4 है, स्थानीय रूप से संकलित। डेटा डीआईआर एक बाध्य माउंट है, जो मेरे दूसरे विस्तारित विभाजन (ext4
) पर स्थित है, जो मुझे विश्वास है कि बाधा नहीं है।
मुझे संदेह है कि विदेशी कुंजी संबंधों को सम्मिलित करने में इतना समय लगता है क्योंकि psql
प्रत्येक पंक्ति के लिए मुख्य बाधाओं के लिए जांच करता है, जो शायद कुछ अनावश्यक ओवरहेड जोड़ता है, क्योंकि मुझे पता है कि डेटा मान्य है। क्या आयात को तेज करने का कोई तरीका है, यानी अस्थायी रूप से बाधा जांच को अक्षम कर रहा है?
हाँ, लेकिन मुझे लगता है कि यह केवल 8.4+ हम्म में है इसे देखना है .... – xenoterracide