12

reference documentation के अनुसार पढ़ें केवल लेनदेन ध्वज डिफ्रैबल लेनदेन की अनुमति के अलावा उपयोगी है? जब तक लेन-देन भी serializable है और यह केवल पढ़नेक्या पोस्टग्रेएसक्यूएल केवल पढ़ने के लिए लेनदेन के लिए कुछ प्रदर्शन अनुकूलन चलाता है

SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY; 

DEFERRABLE लेनदेन संपत्ति कोई प्रभाव नहीं है। जब इन तीनों इन गुणों को एक लेनदेन के लिए चुना जाता है, तो लेनदेन ब्लॉक हो सकता है जब पहले स्नैपशॉट प्राप्त होता है, जिसके बाद यह को एक सर्जिकल लेनदेन के सामान्य ओवरहेड के बिना चलाने में सक्षम होता है और बिना योगदान या होने का कोई जोखिम एक क्रमबद्धता विफलता द्वारा रद्द कर दिया गया। यह मोड लंबे समय से चलने वाली रिपोर्ट या बैकअप के लिए उपयुक्त है।

क्या डेटाबेस इंजन केवल पढ़ने के लिए लेन-देन के लिए अन्य अनुकूलन चलाता है?

+1

मेरी समझ यह है कि रीड-राइट लेनदेन कुछ ओवरहेड लेते हैं, लेकिन जब तक आप वास्तव में कुछ लिखते हैं तब तक आप इस ओवरहेड को नहीं लेते हैं। दूसरे शब्दों में, प्रदर्शन के संदर्भ में, 'केवल पढ़ने' लेनदेन 'रीड राइट' लेनदेन के समान होना चाहिए जिसमें केवल पढ़ा जाता है। यह पोस्टग्रेस XID असाइनमेंट को संभालने के तरीके से उत्पन्न होता है (इस पर कुछ जानकारी [यहां] (https://wiki.postgresql.org/wiki/Hint_Bits))। –

+0

@ निकबर्नेस जो मेरी समझ से मेल खाता है। 'केवल पढ़ने' वास्तव में एक सुरक्षा चीज से अधिक है। –

+0

धन्यवाद। तो स्थगित लेनदेन तब एकमात्र पर्याप्त अनुकूलन हैं। –

उत्तर

5

प्रश्न टिप्पणी में निक बार्न्स और क्रेग रिंगर से टिप्पणी सारांश में:

  1. READ_ONLY झंडा जरूरी नहीं कि कोई अनुकूलन
  2. READ_ONLY ध्वज स्थापित करने का मुख्य लाभ यह सुनिश्चित करना है कि है प्रदान नहीं करता है कोई tuple संशोधित करने जा रहा है
संबंधित मुद्दे