2010-03-05 14 views
6

हालांकि मेरी प्रोग्रामिंग में दैनिक उपयोग करते हुए, लेकिन इस सवाल के बारे में कभी नहीं महसूस किया:क्या रिकॉर्ड दर्ज करते समय mysql में int डेटा प्रकार सीमा तक पहुंचता है?

के बाद से 0 to 4294967295 से मान हो सकते हैं int(unsigned) डेटा प्रकार, क्या वास्तव में यदि ऐसा होता है मैं इस INT क्षेत्रों की घोषणा ऑटो वेतन वृद्धि और एक सुबह होने के लिए, यह बस 4294967295 तक पहुंचता है? स्पष्ट उत्तर यह होगा कि इसे एक त्रुटि डालना चाहिए जो आगे नहीं डाला जा सकता है, लेकिन डेटा कभी भी कॉमिन को रोकता नहीं है और हमें उन रिकॉर्ड को स्टोर करना होगा जो अभी भी कमिन रखें। इस मामले में क्या करना है?

यह भी घोषित कर रहा है कि int (20) इस डिफ़ॉल्ट सीमा से काफी बड़ा होगा?

कोई सुझाव?

धन्यवाद।

+2

20 डेटाप्रकार परिवर्तन नहीं करता है यह सिर्फ गद्दी के लिए प्रयोग किया जाता है, - अंतराल 0 है। बड़े पूर्णांक के लिए एक बिगिनट का प्रयोग करें। –

उत्तर

3

यदि आपको 4 अरब पंक्तियां मिलती हैं, तो तथ्य यह है कि क्षेत्र बह जाएगा, शायद आपकी समस्याओं का कम से कम है।

आप इसे बिगिनट घोषित कर सकते हैं, जिसमें 8 बाइट हैं। इसका अर्थ यह है कि यह 18446744073709551615 तक गिना जाएगा।

यदि यह बहती है तो यह 0 पर वापस जायेगी, और डालने को जारी रखेगी, यदि कोई संख्या उस पंक्ति के साथ मौजूद है तो एक त्रुटि लौटा रही है।

+1

मुझे बड़े डेटाबेस के लिए रणनीति जानने में दिलचस्पी है जहां उनके पास अरबों रिकॉर्ड हैं। मुझे लगता है कि GUID या UUID तब एक विकल्प होगा? – JPro

+1

यदि आप बस सुनिश्चित करना चाहते हैं तो स्वत: संवर्धित बिगिन जाने का तरीका है। 18 क्विंटलियन पंक्तियों को भरने में कुछ समय लगेगा, यहां तक ​​कि एक कंप्यूटर लगातार सभी काम कर रहा है। उस स्थान का उल्लेख न करें जो इसे उपभोग करने जा रहा है। मुझे नहीं लगता कि कभी ऐसा एप्लिकेशन रहा है जिसमें कई रिकॉर्ड थे। शायद एक बुरी तरह से संरचित डीएनए डेटाबेस, लेकिन मुझे गंभीरता से संदेह है कि वे बेवकूफ होंगे। –

संबंधित मुद्दे