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

MySQL कॉलम मान को 0 या '' के बजाय NULL पर सेट करने के डिस्क स्थान के निहितार्थ

नहीं, NULL का उपयोग करने से खाली VARCHAR . से कम जगह नहीं लगेगी या INT खेत। वास्तव में इसमें अधिक लग सकता है अंतरिक्ष। ऐसा क्यों है:

एक VARCHAR आकार + मान के रूप में संग्रहीत किया जाता है। आकार के लिए उपयोग किए गए बाइट्स की संख्या VARCHAR . के अधिकतम संग्रहण पर निर्भर करती है . VARCHAR(255) एक बाइट की आवश्यकता है, VARCHAR(65536) दो बाइट्स वगैरह की आवश्यकता है।

ताकि VARCHAR(255) कॉलम एक बाइट लेता है, भले ही आप एक खाली स्ट्रिंग स्टोर करें। निम्न तालिका प्रति पंक्ति कम से कम एक बाइट (साथ ही भंडारण इंजन के आधार पर कुछ अन्य संभावित ओवरहेड) लेगी।

CREATE TABLE sample (
  a VARCHAR(255) NOT NULL
);

NULL को सेव करने के लिए मान, MySQL प्रत्येक पंक्ति के लिए बिटमास्क का उपयोग करता है। प्रति बाइट में अधिकतम 8 अशक्त स्तंभ संग्रहीत किए जा सकते हैं। तो अगर आपके पास इस तरह की एक टेबल है:

CREATE TABLE sample (
  a VARCHAR(255) NULL
);

प्रति पंक्ति कम से कम दो बाइट लेगा। NULL स्टोर करना बस थोड़ा सा सेट करता है, यह पहले से ही आरक्षित है कि आप इसका इस्तेमाल करते हैं या नहीं। VARCHAR . के लिए बाइट का आकार अभी भी प्रत्येक पंक्ति के लिए उपयोग किया जाता है, भले ही कॉलम NULL . पर सेट हो ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप डेटाटाइम फ़ील्ड का यूटीसी कैसे प्राप्त करते हैं?

  2. MySQL में UTF-8 एन्कोडेड डंप लोड हो रहा है

  3. json_encode कुछ भी वापस नहीं कर रहा है

  4. Mysql सरणी टेक्स्ट से कैसे चुनें और तुलना करें

  5. PHP में साहचर्य सरणियों का उपयोग करके अद्यतन विवरण का निर्माण