मैं एक गर्म-स्टैंडबाय डेटाबेस बनाने के लिए PostgreSQL में Write Ahead Logs (WAL) के लॉग-शिपिंग पर विचार कर रहा हूं। हालांकि मेरे पास डेटाबेस में एक टेबल है जो प्रत्येक दिन INSERT/DELETEs की एक बड़ी राशि प्राप्त करती है, लेकिन मुझे इसमें डेटा की सुरक्षा करने की परवाह नहीं है। उत्पादित वाल की मात्रा को कम करने के लिए मैं सोच रहा था, क्या एक मेज पर किसी भी गतिविधि को डब्ल्यूएएल में दर्ज होने से रोकने का कोई तरीका है?PostgreSQL में केवल एक तालिका पर आगे लिखने को रोकने के लिए कैसे?
उत्तर
दुर्भाग्यवश, मुझे विश्वास नहीं है कि वहां है। वाल लॉगिंग पृष्ठ स्तर पर चलती है, जो तालिका स्तर से काफी कम है और यह भी नहीं जानता कि कौन सा पृष्ठ किस तालिका से डेटा रखता है। वास्तव में, वाल फाइलें यह भी नहीं जानती कि कौन से पृष्ठ डेटाबेस हैं।
आप पोस्टग्रेएसक्यूएल के एक पूरी तरह से अलग उदाहरण में अपनी उच्च गतिविधि तालिका को स्थानांतरित करने पर विचार कर सकते हैं। यह कठोर लगता है, लेकिन मैं अपने डब्ल्यूएएल फाइलों में उस गतिविधि को दिखाने से बचने के लिए अपने सिर के ऊपर से एक और तरीका नहीं सोच सकता।
अपने स्वयं के प्रश्न के लिए एक विकल्प प्रदान करने के लिए। temp tables हैं - "सत्र के अंत में अस्थायी तालिकाओं को स्वचालित रूप से गिरा दिया जाता है, या वैकल्पिक लेनदेन के अंत में वैकल्पिक रूप से नीचे (नीचे COMMIT देखें)" - जो मुझे लगता है कि WAL उत्पन्न नहीं करता है। फिर भी, यह आदर्श नहीं हो सकता है क्योंकि टेबल निर्माण & डिज़ाइन कोड में होना होगा।
मैं इस तरह के मामलों के लिए memcached पर विचार करता हूं। आप भी सस्ते मशीनों के एक गुच्छा पर लोड फैल सकते हैं।
इस पुराने प्रश्न के पार, अब अब एक बेहतर जवाब है। पोस्टग्रेज 9.1 ने "अनलॉगेड टेबल्स" पेश किया, जो वे टेबल हैं जो डब्लूएलएल में अपने डीएमएल परिवर्तनों को लॉग नहीं करते हैं। अधिक जानकारी के लिए दस्तावेज़ देखें, लेकिन कम से कम अब इस समस्या का समाधान है।
Waiting for 9.1 - UNLOGGED tables depesz द्वारा देखें, और 9.1 docs।
9.1 से पहले संस्करणों में, यदि आप आवेषण करने से पहले तालिका को 'छोटा कर देते हैं', तो वे प्रविष्टियां WAL लॉग इन नहीं हैं। –
मेरा मानना है कि यह केवल तभी सच है जब आप एक ही लेनदेन के भीतर छंटनी/डालें, लेकिन अधिक महत्वपूर्ण रूप से गर्म स्टैंडबाय के साथ मामले पर लागू नहीं है, जहां अन्य सर्वर पर भेजने के लिए अभी भी डेटा को WAL स्ट्रीम में जाना है । – xzilla
आप लेनदेन के बारे में सही हैं (मैंने सोचा था कि स्वयं स्पष्ट था;)) यद्यपि गर्म-स्टैंडबाय के बारे में अच्छा बिंदु। –
- 1. PostgreSQL में तालिका पर DELETE अक्षम करें?
- 2. PostgreSQL तालिका
- 3. PostgreSQL में आप केवल एक पहचान कॉलम के साथ तालिका में कैसे डालते हैं?
- 4. टाइमस्टैम्प क्षेत्र का केवल तारीख हिस्सा हो रही, एक मेज से के लिए एक PostgreSQL क्वेरी लिखने के लिए कैसे
- 5. postgresql से तालिका संरचना को मुद्रित करने के लिए कैसे?
- 6. तालिका डेटा देखने के लिए PostgreSql कमांड
- 7. आप एक लिखने-आगे लॉग में क्या लॉग इन करेंगे?
- 8. केवल एक पंक्ति रखने के लिए तालिका को रोकें
- 9. mysql में केवल एक ही तालिका को पढ़ने के लिए केवल
- 10. तालिका में पहली पंक्ति को हटाने से कैसे रोकें (PostgreSQL)?
- 11. PostgreSQL - तालिका नाम के रूप में एक गतिशील मान
- 12. एक नई तालिका बनाने के लिए केवल एक ट्रिगर बनाना
- 13. रेल और सेलेनियम: ब्राउज़र में किसी परीक्षण के निष्पादन को रोकने/रोकने के लिए कैसे?
- 14. जावा में एक लिंक्डलिस्ट पर आगे और आगे जाने के लिए ListIterator का उपयोग
- 15. Postgresql पेड़ तालिका
- 16. कैसे एक चेतावनी संवाद को रोकने के लिए बैक बटन
- 17. PostgreSQL के लिए संग्रहीत प्रक्रियाओं को लिखने के लिए रूबी ट्यूटोरियल?
- 18. सिग्नलआर में मतदान रोकने के लिए कैसे?
- 19. सफारी को AJAX अनुरोधों के लिए 401 प्रतिक्रियाओं को रोकने से रोकने के लिए कैसे करें
- 20. कैसे एक HTTP अनुरोध लिखने के लिए
- 21. UIView के लिए चेतावनी को रोकने के लिए कैसे चयनकर्ता
- 22. चींटी में फ़ाइल में एक चर लिखने के लिए कैसे?
- 23. कैसे BroadcastReceiver को रोकने के लिए मैन्युअल रूप में एंड्रॉयड
- 24. PostgreSQL अनुक्रम के हाइबरनेट उपयोग अनुक्रम तालिका
- 25. नियमित अभिव्यक्ति को रोकने के लिए
- 26. लोचदार बीनस्टॉक पर Django के लिए PostgreSQL
- 27. PostgreSQL में डेटास्टाइल कैसे बदलें?
- 28. SQL सर्वर तालिका के पढ़ने/लिखने के आंकड़े कैसे खोजें?
- 29. कैसे कुंजी स्वयं एक रजिस्ट्री में लिखने के लिए TrustedInstaller
- 30. एसक्यूएल केवल एक तालिका के लिए सभी का चयन करें
टेम्पलेट टेबल सिस्टम कैटलॉग अपडेट (pg_class) के लिए WAL प्रविष्टियां उत्पन्न करेंगे, भले ही वे डेटा अपडेट के लिए नहीं हैं (मुझे यकीन नहीं है)। आप व्यस्त टेबल को कहीं और स्थानांतरित कर सकते हैं और इसे एक्सेस करने के लिए dblink इंटरफ़ेस का उपयोग कर सकते हैं या स्लोनी जैसी तालिका-आधारित प्रतिकृति प्रणाली पर स्विच कर सकते हैं। – mjy