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

क्या MySQL में तालिका परिभाषाओं के अंत में VARCHAR कॉलम रखे जाने चाहिए?

"MySQL" के बारे में यह सवाल पूछना मददगार नहीं है, क्योंकि MySQL स्टोरेज को स्टोरेज इंजन में बदल देता है, और वे स्टोरेज को बहुत अलग तरीकों से लागू करते हैं। यह सवाल किसी भी व्यक्तिगत भंडारण इंजन के लिए पूछना समझ में आता है।

मेमोरी इंजन में, चर लंबाई डेटा प्रकार मौजूद नहीं हैं। एक VARCHAR चुपचाप एक CHAR में बदल जाता है। आपके प्रश्न के संदर्भ में:इससे कोई फर्क नहीं पड़ता कि तालिका परिभाषा में आपने अपना VARCHAR कहाँ रखा है।

MyISAM इंजन में, यदि किसी तालिका में कोई चर लंबाई डेटा नहीं है (VARCHAR, VARBINARY या कोई टेक्स्ट या BLOB प्रकार) तो यह MyISAM के FIXED संस्करण का है, अर्थात रिकॉर्ड की एक निश्चित बाइट लंबाई होती है। इसके प्रदर्शन निहितार्थ हो सकते हैं, खासकर यदि डेटा हटा दिया जाता है और बार-बार डाला जाता है (यानी तालिका केवल संलग्न नहीं है)। जैसे ही कोई भी चर लंबाई डेटा प्रकार तालिका परिभाषा का हिस्सा होता है, यह MyISAM का डायनामिक संस्करण बन जाता है, और MyISAM आंतरिक रूप से VARCHAR के लिए आंतरिक रूप से सबसे छोटा CHAR प्रकार को बदल देता है। फिर, स्थिति और यहां तक ​​कि CHAR/VARCHAR की परिभाषा कोई मायने नहीं रखती।

InnoDB इंजन में, डेटा को 16 KB आकार के पृष्ठों में संग्रहीत किया जाता है। एक पृष्ठ में एक चेकसम के साथ एक पृष्ठ पाद लेख होता है, और एक पृष्ठ शीर्षलेख होता है, जिसमें अन्य चीजों के साथ एक पृष्ठ निर्देशिका होती है। पृष्ठ निर्देशिका में प्रत्येक पंक्ति के लिए पृष्ठ की शुरुआत के सापेक्ष उस पंक्ति की ऑफसेट होती है। एक पृष्ठ में खाली स्थान भी होता है, और सभी I/O पृष्ठों में किए जाते हैं।

इसलिए InnoDB, जब तक किसी पृष्ठ में खाली स्थान है, VARCHAR को जगह में विकसित कर सकता है, और बिना किसी अतिरिक्त I/O के एक पृष्ठ के अंदर पंक्तियों को स्थानांतरित कर सकता है। साथ ही, चूंकि सभी पंक्तियों को (पेजनंबर, पृष्ठ निर्देशिका प्रविष्टि) के रूप में संबोधित किया जा रहा है, एक पृष्ठ के अंदर एक पंक्ति की गति पृष्ठ पर स्थानीयकृत होती है और बाहर से दिखाई नहीं देती है।

इसका मतलब यह भी है कि InnoDB के लिए भी, एक पंक्ति के अंदर कॉलम का क्रम बिल्कुल भी मायने नहीं रखता है।

ये तीन स्टोरेज इंजन हैं जो आमतौर पर MySQL के साथ उपयोग किए जाते हैं, और कॉलम का क्रम इन तीनों में से किसी के लिए भी मायने नहीं रखता है। हो सकता है कि अन्य, अधिक विदेशी स्टोरेज इंजन मौजूद हों, जिसके लिए यह सच नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli_real_escape_string और दोहरे उद्धरण चिह्नों का मुद्दा

  2. MySQL में एकाधिक पंक्तियों को अद्यतन कर रहा है

  3. उच्च उपलब्धता के लिए MySQL के लिए Percona सर्वर कैसे परिनियोजित करें

  4. MySQL दृश्य कैसे बनाएं और उपयोग करें

  5. स्फिंक्स 2.0.4 एमएएमपी 2.0 के साथ त्रुटि स्थापित करें:MySQL शीर्षलेख नहीं ढूंढ सकता