पर मेमोरी का उपयोग करता है मैं पोस्टग्रेस्क्ल डेटाबेस से पूछताछ करने के लिए psycopg2 का उपयोग कर रहा हूं और लगभग 380 एम पंक्तियों वाली तालिका से सभी पंक्तियों को संसाधित करने का प्रयास कर रहा हूं। केवल 3 कॉलम (आईडी 1, आईडी 2, गिनती) सभी प्रकार के पूर्णांक हैं। हालांकि, जब मैं नीचे सीधा चयन क्वेरी चलाता हूं, तो पायथन प्रक्रिया ओएस द्वारा मारने तक, अधिक से अधिक स्मृति का उपभोग शुरू करती है।Psycopg2 बड़े चयन क्वेरी
मिनिमल काम कर उदाहरण (यह मानते हुए कि mydatabase मौजूद है और एक मेज mytable कहा जाता है):
import psycopg2
conn = psycopg2.connect("dbname=mydatabase")
cur = conn.cursor()
cur.execute("SELECT * FROM mytable;")
इस बिंदु पर कार्यक्रम लेने वाली स्मृति शुरू होता है।
मुझे एक नज़र थी और पोस्टग्रेस्क्ल प्रक्रिया अच्छी तरह से व्यवहार कर रही है। यह सीपीयू का एक उचित बिट का उपयोग कर रहा है, जो ठीक है, और बहुत सीमित मात्रा में स्मृति है।
मैं psycopg2 को चयन से सभी परिणामों को बफर करने की कोशिश किए बिना एक इटरेटर वापस करने की उम्मीद कर रहा था। मैं फिर सभी पंक्तियों को संसाधित करने के लिए बार-बार cur.fetchone()
का उपयोग कर सकता था।
तो, मैं उपलब्ध स्मृति का उपयोग किये बिना 380 एम पंक्ति तालिका से कैसे चयन करूं?
ग्रेट, इसके लिए धन्यवाद! मैं थोड़ा सा स्पष्टीकरण सुधारने के लिए कुछ संपादन करने जा रहा हूं और फिर स्वीकार करता हूं। – Carl
क्या यह कर्सर PostgreSQL-server या पायथन-क्लाइंट में मौजूद है? चयन के लिए कर्सर_नाम कर्सर * Mytable से; –
@ फ्रैंकहेइकेंस इस मामले में पाइथन क्लाइंट साइड से सबकुछ किया जाता है। कोई कर्सर सर्वर पक्ष मौजूद नहीं है। – Carl