Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पंक्ति का आकार बहुत बड़ा है (> 8126) क्या मैं सिर्फ InnoDB को MyISAM में बदल सकता हूँ?

हां, आप माईसाम पर स्विच कर सकते हैं। लेकिन यह जरूरी नहीं कि एक अच्छा विचार हो:

  • MyISAM लेन-देन का समर्थन नहीं करता
  • MyISAM तालिकाओं को अक्सर REPAIR की आवश्यकता होती है दुर्घटना के बाद

एक InnoDB तालिका प्रति पंक्ति 8KB से अधिक संभाल सकती है। स्पष्ट रूप से आप एक दर्जन या अधिक टेक्स्ट/ब्लॉब कॉलम होने से समस्या में भाग गए? एक कॉलम के अधिकतम 767 बाइट्स पंक्ति के मुख्य भाग में संग्रहीत होते हैं; बाकी को एक अलग ब्लॉक में रखा गया है।

मुझे लगता है कि एक ROW_FORMAT सभी बड़े स्तंभों को एक अलग ब्लॉक में डाल देगा, केवल 20 बाइट पीछे छोड़कर उस पर इंगित करने के लिए।

विस्तृत पंक्तियों के लिए एक अन्य दृष्टिकोण "ऊर्ध्वाधर विभाजन" करना है। यानी, PRIMARY KEY . से मेल खाने वाली एक और टेबल (या टेबल) बनाएं और कुछ बड़े कॉलम। कम आबादी वाले कॉलम को ऐसी तालिका में ले जाना विशेष रूप से आसान है, फिर उस तालिका में कम पंक्तियां हों, और LEFT JOIN का उपयोग करें डेटा लाने के लिए। इसके अलावा, यदि आपके पास कुछ कॉलम हैं जिनकी आपको शायद ही कभी SELECT की आवश्यकता होती है , तो वे आगे बढ़ने के लिए अच्छे उम्मीदवार हैं -- नहीं JOIN जब आपको उन स्तंभों की आवश्यकता नहीं होती है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql ड्राइवर को jboss में नहीं जोड़ा जा सकता

  2. सत्र बीन में EntityManager अपवाद हैंडलिंग

  3. Laravel:कैसे विधि का उपयोग कर कस्टम सॉर्ट किए गए वाक्पटु संग्रह प्राप्त करने के लिए?

  4. MySQL उन पंक्तियों का चयन करें जहां टाइमस्टैम्प कॉलम अभी और 10 मिनट पहले के बीच है

  5. ओपनशिफ्ट पर कोहाना स्थापित करना?