2009-04-02 11 views
21

में अधिकतम लेनदेन का आकार मेरे पास मेरे आवेदन में उपयोगिता है जहां मुझे INSERT का थोक भार, अद्यतन & DELETE संचालन करने की आवश्यकता है। मैं इसके चारों ओर लेनदेन बनाने की कोशिश कर रहा हूं ताकि एक बार यह प्रणाली आक्रमण हो और डेटा को खिलाया जा सके, यह सुनिश्चित किया जाता है कि यह या तो डेटाबेस में जोड़ा गया है या कोई भी नहीं जोड़ा गया है।PostgreSQL

चिंता क्या है यहां सीमा की स्थिति क्या है? कितने INSERT, अद्यतन & DELETE क्या मेरे पास एक लेनदेन हो सकता है? लेनदेन आकार विन्यास योग्य है?

किसी भी मदद की सराहना की जाएगी।

शुक्रिया

उत्तर

18

मैं वहाँ काम का एक अधिकतम राशि है कि एक सौदे में किया जा सकता है नहीं लगता है। डेटा टेबल फ़ाइलों में डेटा जोड़ता रहता है, और अंत में लेनदेन या तो पीछे आता है या रोल करता है: एआईयूआई यह परिणाम pg_clog में संग्रहीत हो जाता है; यदि यह वापस रोल करता है, तो अंततः अंतरिक्ष को वैक्यूम द्वारा पुनः प्राप्त किया जाएगा। तो ऐसा नहीं है कि चल रहे लेन-देन का काम स्मृति में आयोजित किया जाता है और उदाहरण के लिए प्रतिबद्ध समय पर फंस जाता है।

+14

यह केवल आंशिक रूप से सही है। प्रत्येक लेनदेन के अंदर एक कमांड काउंटर है जो लेनदेन के अंदर दृश्यता से संबंधित है। यह एक 32-बिट संख्या है जो अंततः बहती है यदि आपके पास बहुत बड़ा लेनदेन (अरबों आदेश) हैं। वाक्यूम, पीजी_क्लोग इत्यादि केवल सिस्टम में लेनदेन की कुल संख्या से संबंधित है, न कि उनमें से एक के अंदर क्या होता है। –

+0

@MagnusHagander क्या यह 32-बिट संख्या अभी भी सच है? क्या यह संख्या 64-बिट पर अपडेट की गई है? – Kuberchaun

+0

हां, आंतरिक कमांड काउंटर अभी भी 32 बिट है। –

16

एक परियोजना के लिए मैं काम करता हूं, मैं 20 लाख INSERT करता हूं। मैंने एक बड़े लेनदेन के साथ प्रयास किया और INSERT के हर मिलियन के लिए एक लेनदेन के साथ और प्रदर्शन बिल्कुल वही लगता है।

PostgreSQL 8.3

+1

सिस्टम स्थानीय था? मुझे लगता है कि यह एक ऐसे सिस्टम पर कर रहा है जहां विलंबता एक कारक है, प्रदर्शन अलग-अलग होगा। – user2677679

0

मेरा मानना ​​है कि काम की अधिकतम राशि अपने लॉग फ़ाइल आकार द्वारा सीमित है। डेटाबेस कभी भी रोलबैक में सक्षम नहीं होने की अनुमति देगा, इसलिए यदि आप लेनदेन के दौरान अपनी सभी लॉग स्पेस का उपभोग करते हैं, तो यह तब तक रुक जाएगा जब तक आप इसे अधिक स्थान या रोलबैक न दें। यह सभी डेटाबेस के लिए आम तौर पर सच है।

मैं आपके अपडेट को प्रबंधित करने योग्य हिस्सों में खंडित करने की अनुशंसा करता हूं जो निष्पादन समय के कुछ मिनट लेते हैं, इस तरह आप जानते हैं कि पहले कोई समस्या है या नहीं (उदाहरण के लिए आमतौर पर 1 मिनट लगने पर 10 मिनट के बाद चल रहा है ... हमम, क्या कोई इंडेक्स छोड़ देता है?)

+8

यह PostgreSQL के लिए सच नहीं है। हम चल रहे लेनदेन के दौरान लॉग स्पेस रीसायकल कर सकते हैं। यदि आप संग्रह लॉगिंग कर रहे हैं, तो आपको स्पष्ट रूप से संग्रह स्थान में स्थान की आवश्यकता होगी, लेकिन स्थानीय लेनदेन लॉग के लिए यह आवश्यक नहीं है। (आपको निश्चित रूप से डिस्क पर डेटा के लिए वास्तविक डिस्क स्थान की आवश्यकता होगी)। –

18

एक एकल लेनदेन इसमें लगभग दो अरब कमांड चला सकता है (2^31, शून्य आईआईआरसी ओवरहेड का एक छोटा सा हिस्सा। असल में, इसके बारे में सोचने के लिए आओ, यह 2^32 - कमांड काउंटर मुझे लगता है कि हस्ताक्षर नहीं है)।

इनमें से प्रत्येक आदेश निश्चित रूप से कई पंक्तियों को संशोधित कर सकता है।