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

MySQL में NULL (प्रदर्शन और संग्रहण)

यह निर्भर करता है कि आप किस स्टोरेज इंजन का उपयोग करते हैं।

MyISAM प्रारूप में, प्रत्येक पंक्ति शीर्षलेख में प्रत्येक स्तंभ के लिए एक बिट के साथ एक बिटफ़ील्ड होता है जो NULL स्थिति को एन्कोड करता है। एक कॉलम जो न्यूल है, अभी भी जगह लेता है, इसलिए न्यूल स्टोरेज को कम नहीं करता है। देखें https://dev.mysql.com/doc/internals/ hi/myisam-introduction.html

InnoDB में, प्रत्येक कॉलम में पंक्ति हेडर में "फ़ील्ड स्टार्ट ऑफ़सेट" होता है, जो प्रति कॉलम एक या दो बाइट्स होता है। यदि कॉलम NULL है तो उस फ़ील्ड में उच्च बिट ऑफ़सेट प्रारंभ होता है। उस स्थिति में, कॉलम को बिल्कुल भी संग्रहीत करने की आवश्यकता नहीं है। इसलिए यदि आपके पास बहुत अधिक NULL है तो आपका संग्रहण काफी कम होना चाहिए। देखें https://dev.mysql.com/doc/internals/en/innodb-field-contents.html

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

NULL बिट्स पंक्ति शीर्षलेखों का हिस्सा हैं, आप उन्हें जोड़ना नहीं चुनते हैं।

एनयूएलएल के प्रदर्शन में सुधार करने का एकमात्र तरीका यह है कि इनो डीबी में, डेटा का एक पृष्ठ अधिक पंक्तियों में फिट हो सकता है यदि पंक्तियों में एनयूएलएल होते हैं। तो आपके InnoDB बफ़र्स अधिक प्रभावी हो सकते हैं।

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



  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 में utf-8 mb4 कैरेक्टर (ios5 में इमोजी) कैसे डालें?

  2. पीडीओ:MySQL सर्वर चला गया है

  3. GTID से पारंपरिक प्रतिकृति पर वापस जाएं

  4. लगातार x दिनों के लिए जाँच करें - डेटाबेस में दिए गए टाइमस्टैम्प

  5. MySQL को UTF-8 को ठीक से कैसे हैंडल करें