2010-02-13 13 views
8

हम MySQL समर्थन के साथ एक वैज्ञानिक उपकरण लिख रहे हैं। समस्या यह है कि, हमें अपने डेटाटाइम फ़ील्ड के लिए माइक्रोसॉन्ड परिशुद्धता की आवश्यकता है, जो MySQL वर्तमान में समर्थन नहीं करता है। यहाँ मैं देख रहा हूँ कम से कम दो समाधान:MySQL में माइक्रोसॉन्ड संग्रहीत करना: कौन सा कामकाज?

  • पूर्णांक अंशकालिक में कुछ बिंदु के बाद से सेकंड के लिए इसी के साथ, एक दशमलव() स्तंभ प्रकार का उपयोग करना (मुझे शक है कि यूनिक्स काल करना होगा, क्योंकि हम में लिया माप स्टोर करने के लिए है 60 और 50 के)।
  • दो पूर्णांक कॉलम का उपयोग करना, सेकंड के लिए एक, दूसरा microseconds के लिए।

सबसे लोकप्रिय क्वेरी एक समय अंतराल के लिए इसी कॉलम को चुन रही है (अर्थात dt_record> समय 1 और < समय 2 dt_record)।

इनमें से कौन सी विधियां (या शायद एक और) बड़ी टेबल (लाखों पंक्तियों) के मामले में बेहतर प्रदर्शन प्रदान करने की संभावना है?

उत्तर

4

यदि आप कहते हैं कि सबसे लोकप्रिय प्रश्न समय आधार हैं, मैं एक ही कॉलम के साथ जाने की सिफारिश करता हूं जो आपके पहले विकल्प में समय को संग्रहीत करता है।

आप एप्लिकेशन के लिए अपना खुद का युग चुन सकते हैं, और वहां से काम कर सकते हैं।

यह समय अंतराल की खोज करते समय लिखे जाने वाले प्रश्नों को सरल बनाना चाहिए।

इसके अलावा 10.3.1. The DATETIME, DATE, and TIMESTAMP Types

हालांकि पर एक नजर है, माइक्रोसेकंड किसी भी अस्थायी डेटा प्रकार का एक स्तंभ में जमा नहीं किया जा सकता है। कोई भी माइक्रोसॉन्ड भाग छोड़ दिया गया है। अंकीय रूप को समय या DATETIME मूल्यों का रूपांतरण ( उदाहरण के लिए, जोड़ने +0 द्वारा) एक माइक्रोसेकंड भाग के साथ एक डबल मूल्य में परिणाम .000000

0

की कैसे एक तारीख में तारीख भागों बंटवारे के बारे में आधी रात से केवल एक हिस्सा, और microseconds? दिन में 2^64 माइक्रोसॉन्ड से कम हैं। फिर {date, microsecond} पर तालिका को क्लस्टर करें।

मुझे लगता है, हालांकि मुझे आपका डेटा नहीं पता है, कि कुछ प्रश्न दिन-स्तर की सटीकता के साथ ठीक होंगे - '1 9 64 में प्रयोगों' को माइक्रोसेकंड के बारे में चिंता करने की आवश्यकता नहीं है।

+0

विशिष्ट प्रश्नों को प्रारंभ के लिए मिनट-स्तर की सटीकता की आवश्यकता होगी, जिसका अर्थ यह है कि क्वेरी को उस खंड में दो कॉलम का उपयोग करने की आवश्यकता होगी, जहां तक ​​मैं समझता हूं, प्रदर्शन को काफी प्रभावित करेगा। – dpq

5

MySQL माइक्रोसेकंड का समर्थन करेंगे, MySQL 5.6.4 changelog देखें:

आंशिक सेकंड हैंडलिंग

असंगत बदलें: MySQL अब समय के लिए आंशिक सेकंड, DATETIME, और टाइमस्टैम्प मूल्यों, ऊपर माइक्रोसेकंड के साथ (6 अंक परमिट) परिशुद्धता। एक कॉलम को परिभाषित करने के लिए जिसमें एक आंशिक सेकेंड भाग शामिल है, सिंटैक्स टाइप_नाम (एफएसपी) का उपयोग करें, जहां type_name TIME, DATETIME, या TIMESTAMP है, और fsp fractional सेकंड सटीक है। उदाहरण के लिए:

तालिका टी 1 (टी टाइम (3), डीटी डेटाटाइम (6) बनाएं); एफएसपी मान, यदि दिया गया है, 0 से 6 की सीमा में होना चाहिए।0 का मान दर्शाता है कि आंशिक भाग नहीं है। यदि छोड़ा जाता है, डिफ़ॉल्ट परिशुद्धता 0. है (यह 6 के मानक एसक्यूएल डिफ़ॉल्ट से अलग है, पिछले MySQL संस्करणों के साथ संगतता के लिए।)

निम्नलिखित मदों इस परिवर्तन के प्रभाव को संक्षेप। भी अनुभाग 10.3.5, "समय मान में फ्रैक्शनल सेकेंड" देखें।

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