MyISAM से संबंधित प्रश्न में आपके पास जो जानकारी है, वह सही निशाने पर है। हालांकि, मैं आपके दो अतिरिक्त प्रश्नों का समाधान करना चाहूंगा:
नवीनतम प्रश्न
अध्याय 10 :"भंडारण इंजन" पृष्ठ 196 अनुच्छेद 7 कहता है
उस पैराग्राफ के आधार पर, पुराना रिकॉर्ड लिंकेज डेटा के साथ तभी ओवरराइट हो जाता है, जब डालने के लिए नया डेटा पहले से आवंटित ब्लॉक में फिट नहीं हो सकता है। इसके परिणामस्वरूप कई फूली हुई पंक्तियाँ हो सकती हैं।
अतिरिक्त प्रश्न
मेरे पिछले उत्तर से, बहुत सारे ब्लॉक होंगे जिनमें
- अंतरिक्ष का अवरोध
- रिकॉर्ड की लंबाई
- ब्लॉक में अप्रयुक्त बाइट्स की संख्या
- शून्य मान संकेतक फ़्लैग
- संभावित रूप से रिकॉर्ड की निरंतरता के लिए एक संकेतक यदि रिकॉर्ड पहले बनाए गए स्थान में फिट नहीं था और उसे विभाजित किया जाना था
इस तरह के रिकॉर्ड लिंक प्रत्येक पंक्ति के सामने शुरू होंगे जिसमें बड़े आकार का डेटा डाला जा रहा है। यह एक MyISAM तालिकाओं को फूला सकता है .MYD
फ़ाइल बहुत जल्दी।
सुझाव
MyISAM का डिफ़ॉल्ट पंक्ति स्वरूप गतिशील है। जब कोई तालिका गतिशील होती है और बहुत सारे INSERTs, UPDATEs, और DELETEs का अनुभव करती है, तो ऐसी तालिका को
के साथ अनुकूलित करने की आवश्यकता होगीOPTIMIZE TABLE mytable;
एक विकल्प है:तालिका के पंक्ति प्रारूप को फिक्स्ड पर स्विच करें। इस तरह, सभी पंक्तियों का आकार समान है। इस प्रकार आप पंक्ति प्रारूप को स्थिर बनाते हैं:
ALTER TABLE mytable ROW_FORMAT=Fixed;
एक निश्चित पंक्ति प्रारूप के साथ भी, एक उपलब्ध रिकॉर्ड का पता लगाने में समय लगना चाहिए लेकिन समय ओ (1) खोज समय होगा (आम आदमी के शब्दों में, उपलब्ध रिकॉर्ड का पता लगाने में उतना ही समय लगेगा, चाहे कितनी भी पंक्तियाँ हों तालिका में या कितनी हटाई गई पंक्तियाँ हैं)। आप समवर्ती_सम्मिलित करें इस प्रकार:
इसे my.cnf में जोड़ें
[mysqld]
concurrent_insert = 2
MySQL पुनरारंभ की आवश्यकता नहीं है। बस दौड़ें
mysql> SET GLOBAL concurrent_insert = 2;
इससे सभी INSERT खाली स्थान की तलाश किए बिना तालिका के पीछे चले जाएंगे।
निश्चित पंक्ति तालिकाओं का लाभ
- INSERTs, UPDATEs, और DELETEs कुछ तेज़ होंगे
- चुनें 20-25% तेज़ हैं
पंक्ति प्रारूपों को ठीक करने के लिए SELECT के तेज़ होने पर मेरी कुछ पोस्ट यहां दी गई हैं
May 03, 2012
:कौन सा तेज है, InnoDB या माईसाम?Sep 20, 2011
:बेस्ट ऑफ MyISAM और InnoDBMay 10, 2011
:एक निश्चित आकार के क्षेत्र पर CHAR बनाम VARCHAR का उपयोग करने का प्रदर्शन प्रभाव क्या है?
फिक्स्ड रो टेबल के नुकसान
ज्यादातर मामलों में, जब आप ALTER TABLE mytable ROW_FORMAT=Fixed;
चलाते हैं , तालिका 80-100% बढ़ सकती है। .MYI
फ़ाइल (MyISAM तालिका के लिए अनुक्रमणिका पृष्ठ) भी उसी दर से बढ़ेगी।
EPILOGUE
यदि आप MyISAM तालिकाओं के लिए गति चाहते हैं और बड़ी तालिकाओं के साथ रह सकते हैं, तो मेरे वैकल्पिक सुझावों की आवश्यकता होगी। यदि आप प्रत्येक MyISAM तालिका के लिए स्थान को संरक्षित करना चाहते हैं, तो पंक्ति प्रारूप को (गतिशील) के रूप में छोड़ दें। आपको टेबल को OPTIMIZE TABLE mytable;
. से कंप्रेस करना होगा गतिशील तालिकाओं के साथ अधिक बार।