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

InnoDB पर अनुक्रमणिका का पुनर्निर्माण करें

क्या आप SHOW TABLE STATUS कर रहे हैं? आपके ड्रॉप के पहले और बाद में + पुनर्निर्माण? क्या Index_length बहुत बदलता है? शायद दो के एक फ़ैक्टर से भी नहीं।

मैं लगभग कभी भी InnoDB में कुछ भी पुनर्निर्माण करने की अनुशंसा नहीं करता हूं। यह इसके लायक नहीं है। एक स्पष्ट अपवाद FULLTEXT . से संबंधित है अनुक्रमणिका।

हाँ डमी ALTER अनुक्रमणिका का पुनर्निर्माण करेगा। तो OPTIMIZE TABLE . होगा . दोनों सेकेंडरी इंडेक्स बीट्री और मुख्य बीट्री (जिसमें डेटा और PRIMARY KEY शामिल हैं) को "डीफ़्रैग्मेन्ट" (कुछ हद तक) करेंगे। )।

आंकड़े बहुत हो सकते हैं केवल ANALYZE TABLE . का उपयोग करके अधिक सस्ते में अपडेट किया गया . यहां तक ​​कि अक्सर इसकी जरूरत नहीं होती है। 5.6 में आँकड़ों को बनाए रखने का एक बेहतर तरीका है।

यदि आप पहले से innodb_file_per_table=ON . का उपयोग नहीं कर रहे हैं , मेरा सुझाव है कि आप इसे सेट करें (SET GLOBAL ... ) और ALTER TABLE tbl ENGINE=InnoDB; . करें एक आखिरी बार।

ऑनलाइन परिवर्तन

ft_* बदलने के लिए , आपको अनुक्रमणिका का पुनर्निर्माण करने की आवश्यकता है। इसका मतलब है एक ALTER (या OPTIMIZE , जिसे ALTER . के रूप में लागू किया गया है ) MySQL के नए संस्करणों में ALGORITHM=INPLACE है जो ALTER . बनाता है रनिंग सिस्टम पर बहुत कम या कोई प्रभाव नहीं पड़ता है। लेकिन, सीमाएं हैं। मैनुअल की जाँच करें।

गैर-INPLACE का एक विकल्प ALTER है pt-query-digest या gh-ost . देखें कि उनमें से कोई आपके मामले में काम करेगा या नहीं।

"तालिका के पुनर्निर्माण" से छोटा, आप DROP INDEX ... . कर सकते हैं और ADD INDEX ... . दोबारा, मुझे नहीं पता कि ये एफटी इंडेक्स "इनप्लेस" के लिए काम करते हैं या नहीं। वैसे भी, आप इस प्रक्रिया के दौरान उस अनुक्रमणिका का उपयोग खो देंगे।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MASSIVE MySQL टेबल पर कंप्यूटेड कॉलम के लिए ORDER BY को ऑप्टिमाइज़ कैसे करें

  2. परिणाम में नया कॉलम जोड़ें और तालिका को समेकित करें

  3. MacOS MySQL सर्वर प्रारंभ नहीं कर सकता

  4. MySqlConnection.StateChange कभी नहीं ला रहा है

  5. mySQL आगामी जन्मदिन चुनें