2011-12-01 11 views
14

mysql पर लॉग तालिका के लिए उपयोग करने के लिए सबसे अच्छा स्टोरेज इंजन क्या है?लॉग तालिका के लिए MySQL स्टोरेज इंजन

तालिका में आईडी फ़ील्ड (इन्ट्स) एक दिनांक फ़ील्ड, संदेश स्तर के लिए एक वर्चर और संदेश के साथ एक टेक्स्ट फ़ील्ड होगा।

यह सभी प्रकार की चीजें, उपयोगकर्ता क्रियाएं, सिस्टम इवेंट आदि लॉग करेगा .. यह बहुत तेज़ी से बढ़ने की उम्मीद है।

इसमें रिकॉर्ड्स कभी संशोधित नहीं होंगे और शायद ही कभी पहुंचेगा। जब एक्सेस किया गया दिनांक दिनांक और आईडी द्वारा क्रमबद्ध किया जाना चाहिए।

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

कोई सुझाव?

उत्तर

23

खैर, अपने प्रश्न के अनुसार, InnoDB काम क्योंकि करना चाहिए:

  1. यह scalability है एक बहुत MyISAM से बेहतर है
  2. यह पंक्ति-लॉकिंग है, इसलिए यदि आप अधिक से अधिक लेखन के लिए जा रहे हैं चुनता है, यह बेहतर फिट बैठता है।
  3. अंत में, चूंकि आपने कहा था कि उन्हें शायद ही कभी एक्सेस किया जाएगा, माईसाम की कोई आवश्यकता नहीं है क्योंकि यह चुनिंदा प्रश्नों पर बेहतर है।

Check this for more information

संपादित

ठीक है, टिप्पणी आप अन्य इंजनों के बारे में पूछने में। इंजन के full list यहां दिए गए हैं। उनमें से, जैसा कि आपने कहा है कि संग्रह का नुकसान है, अन्य आपके अनुरोध के अनुरूप नहीं हैं।

InnoDB has been designed for maximum performance when processing large data volumes. 
Its CPU efficiency is probably not matched by any other disk-based relational database 
engine. 
तो मूल रूप से

:: यहाँ MySQL वेबसाइट से एक उद्धरण है

  1. आप स्मृति का उपयोग नहीं करने के रूप में आप ने कहा कि आप डेटा एक बहुत पर नहीं पहुंच सकेगी करते जा रहे हैं और अपनी मेज होगा बहुत ज्यादा बढ़ोतरी इसके लिए आपको बहुत सी रैम की आवश्यकता होगी और जब आप सभी डेटा रीबूट करेंगे तो खो जाएगा।
  2. यदि आप MyISAM का उपयोग करने जा रहे हैं, तो यह उन तालिकाओं के लिए डिज़ाइन नहीं किया गया है, जो प्रश्नों का चयन सम्मिलित करने और अपडेट करने से अधिक बार होते हैं।
  3. संग्रह के लिए, यह आपकी पसंद है। Here एक लॉग टेबल के लिए MyISAM और संग्रह के बीच तुलना है। हालांकि मैं इनो डीबी से चिपके रहूंगा।
  4. मैं मर्ज, ब्लैकहोल, उदाहरण और अन्य इंजनों का भी उल्लेख नहीं करूंगा। (मुझे सीएसवी इंजन पर ज्यादा ज्ञान नहीं है, लेकिन जहां तक ​​मैंने पढ़ा है, यह इस तरह की तालिका के लिए एक अनुमोदित इंजन नहीं है।

ईमानदार होने के लिए, मैं बहुत खर्च करता था कोडिंग में एक महत्वपूर्ण कदम बनाने से पहले। मैंने घंटों तक शोध किया, शायद किसी मुद्दे के बारे में यह देखने के लिए कि कौन सा तरीका सबसे उपयुक्त है। मैं आपको बताउंगा कि शोध क्या अच्छा है, लेकिन एक बिंदु के बाद यदि यह आपको काम करने से रोकता है तो आपको रुकना चाहिए, कॉफी पीना चाहिए, और अपनी पसंद तुरंत करनी चाहिए। इसलिए, बस आपको सबसे उपयुक्त प्रयास करें और जैसा कि आप अनुभव करेंगे, आपको स्वयं को आजमाकर एक बेहतर तरीका मिलेगा।मेरा मतलब है, मुझे विश्वास नहीं है कि फेसबुक को इस तरह के वॉल्यूम के लिए डिजाइन किया गया था, लेकिन जैसे ही यह बढ़ता गया, वैसे ही उन्होंने संरचना को बदलना जारी रखा। हालांकि मैं यही मानता हूं कि वास्तविकता नहीं हो सकती है :) वैसे भी, उम्मीद है कि जानकारी आपकी मदद करेगी।

संपादित करें 2013

आप नीचे MySQL भंडारण इंजन में निर्मित के लिए संक्षिप्त विवरण मिल जाएगा।

MyISAM

इन तालिकाओं में इस तरह के उन्नत कैश और अनुक्रमण तंत्र है, जो डेटा के लिए तेजी से पहुँच प्रदान करते हैं के रूप में अतिरिक्त अनुकूलन, शामिल हैं। टेबल-स्तरीय लॉकिंग का उपयोग करके, माईसाम स्टोरेज इंजन समवर्ती परिचालन के लिए प्रदान करता है। जब प्रदर्शन को पढ़ना एक चिंता है, आम तौर पर, माईसाम पसंद है।

मेमोरी

भी कहा जाता है ढेर टेबल, स्मृति टेबल अक्सर इस्तेमाल किया डेटा है कि शायद ही कभी (जैसे देश कोड, कोड या उन अन्य देखने तालिकाओं के रूप में) बदल दिया जाता है की तेजी retrievel लिए आदर्श हैं। जैसा कि नाम से पता चलता है, डेटा स्मृति में संग्रहीत होता है और इसलिए डिस्क में संग्रहीत डेटा की तुलना में पहुंच बहुत तेज़ होती है। स्मृति का उपयोग करने के लिए एक महत्वपूर्ण प्रतिबंध यह है कि डेटा MySQL सत्र के दौरान मान्य है। जब यह क्रैश हो जाता है, या डेटा बंद हो जाता है तो खो जाता है।

InnoDB

ही एक मामला यह मेमोरी इंजन का उपयोग करना होगा जहां जब आप विदेशी कुंजी या लेन-देन उपयोग करने की आवश्यकता है। InnoDB MyISAM से अधिक समवर्ती है क्योंकि यह पंक्ति-स्तर लॉकिंग प्रदान करता है। भंडारण इंजन अत्यधिक विश्वसनीय है। एक और मामला जब आप इस भंडारण का उपयोग करना चाहते हैं तो जब आपके पास पढ़ने से अधिक लिखते हैं। जब आप टेबल में डेटा लिखते हैं तो इस स्टोरेज का उपयोग करने का प्रयास करें यह मायिसैम से अधिक समवर्ती है।

आर्काइव

यह एक संपीड़ित प्रारूप में डेटा की बड़ी मात्रा के भंडारण के लिए बनाया गया है। इस स्टोरेज इंजन के उपयोग मामलों में से एक संग्रह या ऐतिहासिक डेटा या सुरक्षा लॉग स्टोर करना है। तालिका किसी भी इंडेक्स का उपयोग नहीं करती है ताकि दैनिक डेटा पुनर्प्राप्ति और भंडारण के लिए यह एक अच्छी पसंद न हो। यह पंक्ति-स्तर लॉकिंग है और जब मांग की जाती है तो डेटा फ्लाई पर असम्पीडित होता है। इसके अलावा, तालिका में बदलाव संभव नहीं है।

मर्ज

मर्ज 'मर्ज' विभाजित टेबल जो एक ही मशीन पर रहते हैं प्रयोग किया जाता है। जब आप एक बड़ी तालिका को कई छोटी तालिकाओं में विभाजित करते हैं, और एक साथ मर्ज-टेबल का उपयोग करके उन्हें एक्सेस करते हैं, तो सबसे बड़ा लाभ इसकी गति है। तालिकाओं में कम डेटा होने के बाद खोज और प्रकार तेजी से निष्पादित हो जाएंगे।

+0

यदि विकल्प MyISAM और InnoDB के बीच था, तो विकल्प आसान होगा। अन्य स्टोरेज इंजनों के बारे में क्या? InnoDB सभी के बीच सबसे अच्छा फिट है? – applechief

+0

@chaft मैंने उत्तर संपादित किया है, कृपया इसे देखें :) –

+0

धन्यवाद, यह ब्रीफिंग मेरा दिन बचाओ :) – Sal00m

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