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

mySQL विभाजन बहु-फ़ाइल बनाम एक-फ़ाइल प्रदर्शन?

जैसा कि आप पहले ही बता चुके हैं -innodb_file_per_table यह तय करेगा कि एक टेबल को एक फाइल में स्टोर किया जाएगा या (यदि विभाजित किया गया है) कई फाइलों में।

यहां प्रत्येक दृष्टिकोण के कुछ पेशेवरों और विपक्ष हैं (एक पूरी सूची आवश्यक नहीं है)।

Single file per table                    Multiple files per (partitioned) table
--------------------------------------   --------------------------------------
+ System uses less filehandles           - System uses more filehandles
+ One one fsync per second per table     - Possibly many more fsync calls (bottleneck)
  (less fs overhead (journal etc))         (more fs overhead)
+ Single file uses less space overall    - Much larger disk space usage
- Single file fragments badly            + Less fragmentation 
- Optimize table (et al) takes longer    + You can choose to optimize just one file
- One file = one filesystem              + You can put heavy traffic files on a fast fs
                                           (e.g. on a solid state disk)
- Impossible to reclaim disk space       + possible to emergency-reclaim disk space 
  in a hurry (truncate table takes long)   fast (just delete a file)
- ALTER TABLE can use large % of disk-   + rebuilding with ALTER TABLE will use less
  space for temp tables while rebuilding   temp disk space

सामान्य तौर पर मैं नहीं एकाधिक फ़ाइलों की अनुशंसा करें।
यदि फिर भी आपका कार्यभार भारी विखंडन की ओर ले जाता है और optimize table बहुत अधिक समय लगता है, एकाधिक फ़ाइलों का उपयोग करना समझ में आता है।

स्थान पुनः प्राप्त करने के बारे में भूल जाएं
कुछ लोग इस बात को लेकर बहुत हंगामा करते हैं कि InnoDB तालिका में फ़ाइलें हमेशा बढ़ती हैं और कभी सिकुड़ती नहीं हैं, जिससे पंक्तियों को हटाने पर जगह बर्बाद हो जाती है।
फिर वे उस स्थान को पुनः प्राप्त करने के लिए योजनाएं लेकर आते हैं ताकि मुक्त डिस्क स्थान से बाहर नहीं चलाने के लिए। (truncate table x )।
यह कई फाइलों के साथ बहुत तेजी से काम करेगा, हालांकि यह सब बकवास है, क्योंकि डेटाबेस लगभग हमेशा बढ़ते हैं और (लगभग) कभी सिकुड़ते नहीं हैं, इसलिए अंतरिक्ष को पुनः प्राप्त करने में बहुत समय बर्बाद होगा (सीपीयू और आईओ) के दौरान आपकी तालिका पूरी तरह से लॉक हो जाएगी (कोई पढ़ने और लिखने की अनुमति नहीं है)।
केवल यह पता लगाने के लिए कि आपकी 90% पूर्ण डिस्क (पुनर्प्राप्त करने के बाद 50%) अगले महीने डेटा जोड़ने के बाद 99% पूर्ण हो जाएगी।

हालांकि ALTER TABLE का उपयोग करते समय सावधान रहें...
निम्न परिदृश्य पर विचार करें:
- डिस्क 60% भरी हुई है।
- डेटाबेस 50% तक लेता है, अन्य फ़ाइलें 10% तक लेती हैं।
यदि आप कोई alter table किसी भी टेबल पर, यदि आपके पास एक फ़ाइल में सभी टेबल हैं, तो आप डिस्क स्थान से बाहर हो जाएंगे।
यदि आपके पास यह कई फाइलों में है, तो आपको समस्या नहीं होनी चाहिए (कैफीन की अधिक मात्रा के अलावा जो प्रतीक्षा कर रही है)।




  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. क्या मैसकल UUID_SHORT () UUID से तुलनीय है ()

  3. सीएसवी को MYSQL टेबल निर्यात करते समय शून्य फ़ील्ड को कैसे संभालें?

  4. पीडीओ के साथ कुछ मौजूद है या नहीं, यह जांचने का सबसे अच्छा तरीका क्या है?

  5. आउटर जॉइन और ग्रुप बाय के साथ एक क्वेरी में NULL मान कैसे शामिल करें?