मैं शर्त लगाऊंगा कि आपका डेटाबेस RAC (रियल एप्लिकेशन क्लस्टर) चला रहा है। यह मानते हुए कि यह मामला है और आप सभी डिफ़ॉल्ट सेटिंग्स के साथ अनुक्रम बनाते हैं, यही अपेक्षित व्यवहार है।
डिफ़ॉल्ट सेटिंग 20 मानों को कैश करना है। आरएसी क्लस्टर में प्रत्येक नोड, डिफ़ॉल्ट रूप से, एक अलग कैश होगा। यह मानते हुए कि आपके पास दो नोड्स A और B वाला क्लस्टर है, पहली बार nextval
A पर अनुरोध किया गया है, A 1-20 के मानों को कैश करेगा और 1 का मान लौटाएगा। यदि nextval
के लिए अगला अनुरोध बी पर बना है, बी 21-40 के मूल्यों को कैश करेगा और 21 का मान लौटाएगा। वहां से, आपको जो मूल्य मिलेगा वह उस नोड पर निर्भर करेगा जिस पर आपका कनेक्शन चल रहा है।
सामान्य तौर पर, यह कोई समस्या नहीं होनी चाहिए। अनुक्रम अद्वितीय संख्याएँ उत्पन्न करते हैं। संख्याएं आम तौर पर लगातार नहीं होनी चाहिए। यदि आपको वास्तव में मूल्यों को क्रमिक रूप से वापस करने की आवश्यकता है क्योंकि आप "पहली" या "अंतिम" पंक्ति निर्धारित करने के लिए अनुक्रम-जनित मान द्वारा आदेश देने जैसा कुछ कर रहे हैं, तो आप ORDER
का उपयोग कर सकते हैं क्लॉज जब आप मूल्यों को क्रम में वापस करने के लिए बाध्य करने के लिए अनुक्रम बनाते हैं। हालांकि, आरएसी डेटाबेस में इसका नकारात्मक प्रदर्शन निहितार्थ है, क्योंकि यह संचार की मात्रा को बढ़ाता है जिसे वापस किए जा रहे मूल्यों को सिंक्रनाइज़ करने के लिए नोड्स के बीच जाने की आवश्यकता होती है। यदि आपको "पहली" या "अंतिम" पंक्ति निर्धारित करने की आवश्यकता है, तो आमतौर पर date
जोड़ना बेहतर होता है या एक timestamp
तालिका में कॉलम और उसके द्वारा क्रम से यह मानने के बजाय कि प्राथमिक कुंजी क्रमिक रूप से उत्पन्न होती है।