2009-10-19 6 views
6

मैं एक सिस्टम में एक नई सुविधा जोड़ने की प्रक्रिया में हूं। प्रक्रिया पीएलसी से लाइव डेटा पढ़ेगी और उन्हें डेटाबेस में स्टोर करेगी। डेटा तालिका में 4 कॉलम होंगे: variable_id (SMALLINT), टाइमस्टैम्प (TIMESTAMP), मान (फ़्लोट), गुणवत्ता (TINYINT)। प्राथमिक कुंजी (variable_id, टाइमस्टैम्प) है।उच्च डालने लोड के लिए सबसे अच्छा MySQL तालिका प्रारूप क्या है?

सिस्टम को हर सेकेंड 1000-2000 रिकॉर्ड डालने में सक्षम होना चाहिए।

डेटा तालिका डेटा के अंतिम 24 घंटे रखेगी, पुराने डेटा को तालिका से हटा दिया जाएगा।

डेटा तालिका को हर सेकेंड में 5-10 चयन विवरणों को संभालने की भी आवश्यकता है। चयन कथन तालिका से सबसे विशिष्ट मान को एक विशिष्ट चर के लिए चुन रहा है और इसे वेब पर प्रदर्शित कर रहा है।

क्या मुझे MyISAM या InnoDB तालिका प्रारूप का उपयोग करना चाहिए? क्या इंसर्ट करते समय MyISAM पूरी तालिका को लॉक करता है, इस प्रकार वेब इंटरफ़ेस से चुनिंदा बयानों को अवरुद्ध करता है? वर्तमान में डेटा बेस में सभी डेटा टेबल MyISAM टेबल हैं।

उत्तर

6

क्या मुझे MyISAM या InnoDB तालिका प्रारूप का उपयोग करना चाहिए?

लगातार समवर्ती पढ़ने और लिखने वाली किसी भी परियोजना के लिए, आपको InnoDB का उपयोग करना चाहिए।

क्या माइस्सैम आवेषण करते समय पूरी तालिका को लॉक करता है, इस प्रकार वेब इंटरफेस से चुनिंदा बयानों को अवरुद्ध करता है?

@@concurrent_insert सक्षम होने पर, MyISAM, जबकि अभी भी एक और सत्र से समवर्ती पढ़ने समाप्त करने के लिए डाला पंक्तियां जोड़ी कर सकते हैं।

हालांकि, अगर आप कभी भी INSERT पर कुछ भी कर सकते हैं, तो यह असफल हो सकता है (i। ई। तालिका लॉक हो जाएगी)।

सिस्टम को हर सेकेंड 1000-2000 रिकॉर्ड डालने में सक्षम होना चाहिए।

इन आवेषणों को बैच करना और बैचों में उन्हें करना बेहतर होगा।

InnoDB प्रति सेकंड लेनदेन की तुलना में प्रति सेकेंड पंक्तियों के मामले में बहुत तेज है।

डेटा तालिका डेटा के अंतिम 24 घंटे रखेगी, पुराने डेटा को तालिका से हटा दिया जाएगा।

ध्यान दें कि InnoDB सभी पंक्तियों की जांच करता है, न केवल प्रभावित लोगों को।

अपने DELETE बयान कभी एक fullscan का उपयोग करेगा, तो समवर्ती INSERTs असफल हो जायेगी (fullscan के बाद से InnoDB कर देगा जगह सभी रिकॉर्ड पर खाई ताले पिछले एक सहित ब्राउज़ किए गए)।

+0

अच्छा जवाब। आपके लिए +1 –

2

माईसाम तेज है, और यह पूरी तालिका को ताला लगा देता है। InnoDB लेनदेन-आधारित है, इसलिए यह पंक्ति लॉकिंग करेगा, लेकिन धीमा है।

+1

एफडब्ल्यूआईडब्ल्यू, मैंने इनो डीबी से बहुत अच्छा प्रदर्शन किया है, लेकिन माईसाम बहुत तेज है। वे इससे दूर हो जाते हैं क्योंकि वे इनओडीबी के बहुत सारे चेक अक्षम करते हैं। –

+0

आपके उत्तर के लिए धन्यवाद। जब मैं रिकॉर्ड्स डालने जा रहा हूं, तो माईसाम के साथ तालिका चुनिंदा बयानों के लिए बंद है? उदाहरण के लिए यदि एक सम्मिलन कथन को समाप्त करने के लिए 5 सेकंड लगते हैं (केवल एक यादृच्छिक संख्या) तो चयन कथन को 5 सेकंड तक इंतजार करना होगा जब तक कि वह परिणाम न लौटाए? – thoraniann

+0

मुझे लगता है कि क्वास्नोई उस प्रश्न का उत्तर देते हैं - @@ concurrent_insert के बारे में थोड़ा सा जांचें। –

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