मेरे पास एक लॉगिंग टेबल है जिसमें सांख्यिकीय कारणों के लिए लाखों लेखन होंगे। सभी कॉलम int विदेशी कुंजी हैं। मैं प्रत्येक पंक्ति के लिए एक टाइमस्टैम्प कॉलम भी जोड़ने जा रहा हूं। यह देखते हुए कि DATETIME 8 बिट लेता है - मैं स्टोरेज स्पेस (और उस कॉलम पर इंडेक्स) को आधा में कटौती करने के लिए int(10) unsigned
का उपयोग करूँगा।इंटिक्स टाइमस्टैम्प को इंट कॉलम में कैसे संग्रहीत किया जाना चाहिए?
हालांकि, मुझे आश्चर्य है कि यह कॉलम अब काम नहीं करेगा। 1 9 जनवरी 2038 को 3:14:07 पूर्वाह्न पर 9, 99, 99, 999 मूल्य यूनिक्स टाइमस्टैम्प के लिए एक समस्या होगी - लेकिन MySQL में एक हस्ताक्षरित int केवल 4,294,967,295 तक रहता है और टाइमस्टैम्प 42 9 4 9 672 9 5 मेरे PHP एप्लिकेशन में एक अवैध संख्या दिखा रहा है।
तो इसका क्या अर्थ है? क्या MySQL में भंडारण int टाइमस्टैम्प का अंत 2021 में कभी-कभी होने वाला है क्योंकि यह 99 99 99 99 99 तक इसे सभी तरह से नहीं बना सकता है?
उत्तर:
- 2147483647 2038 (नहीं 9999999999) है तो वहाँ कोई समस्या नहीं है।
unsigned
की आवश्यकता नहीं है क्योंकि 2147483647 एक हस्ताक्षरित MySQL int में ठीक फिट बैठता है।
मैं इसके बारे में चिंता करूंगा। ;) – Stephen
यदि आपके पास 10 मिलियन पंक्तियां थीं, तो आप एक अतिरिक्त अतिरिक्त 9.5 एमबी का उपयोग करेंगे ... वास्तव में DATETIME प्रकार का उपयोग करें। –
आपको यह ध्यान में रखना चाहिए कि डेटटाइम प्रकार का उद्देश्य आपको इस समस्या से निपटने से बचाने के लिए है। – Nick