पर सीरियलज़ेबल अलगाव उल्लंघन मेरे पास एक बहुत बड़ा रेडशिफ्ट डेटाबेस है जिसमें HTTP अनुरोध डेटा की अरबों पंक्तियां हैं।रेडशिफ्ट: तालिका
ip_address
city
state
country
मैं एक अजगर प्रक्रिया के अनुसार एक बार चल रहा है:
मैं एक मेज requests
जो कुछ महत्वपूर्ण क्षेत्रों है कहा जाता है दिन, जो सभी डी पकड़ता है अलंकृत पंक्तियां जिन्हें अभी तक भूगर्भित नहीं किया गया है (कोई शहर/राज्य/देश की जानकारी नहीं है), और फिर Google के जियोकोडिंग एपीआई के माध्यम से प्रत्येक आईपी पते को geocode करने का प्रयास करता है।
यह प्रक्रिया (स्यूडोकोड) इस तरह दिखता है:
for ip_address in ips_to_geocode:
country, state, city = geocode_ip_address(ip_address)
execute_transaction('''
UPDATE requests
SET ip_country = %s, ip_state = %s, ip_city = %s
WHERE ip_address = %s
''')
इस कोड चल रहा है, मैं अक्सर त्रुटियों निम्नलिखित की तरह प्राप्त करते हैं:
psycopg2.InternalError: 1023
DETAIL: Serializable isolation violation on table - 108263, transactions forming the cycle are: 647671, 647682 (pid:23880)
मैं इस संभालने हूँ है, क्योंकि मैं अन्य मेरी तालिका में लगातार HTTP अनुरोधों को लॉगिंग करने की प्रक्रिया करता है, इसलिए जब मैं अपना अद्यतन विवरण निष्पादित करने का प्रयास करता हूं, तो यह उस IP पते के साथ सभी पंक्तियों का चयन करने में असमर्थ है, जिसे मैं अपडेट करना चाहता हूं।
मेरा प्रश्न यह है: मैं इन रिकॉर्ड्स को एक ऐसे तरीके से अपडेट करने के लिए क्या कर सकता हूं जो नियमित रूप से विफल रहेगा?