जब मैं mysqltuner चलाते हैं, तो किसी कारण से, MySQL सर्वर में सभी InnoDB टेबल को खंडित किया जा रहा है। मैंने केवल कुछ घंटों पहले (ओएसएक्स लायन पर) सर्वर स्थापित किया था, और इसमें बैच फ़ाइलों से आयातित ताजा डेटा का एक गुच्छा है।
मैंने एक डेटाबेस में सभी तालिकाओं को MYISAM में बदलने की कोशिश की, और निश्चित रूप से खंडित तालिकाओं की संख्या काफी कम हो गई। अजीब बात है, हालांकि, जैसे ही मैंने उन तालिकाओं को वापस InnoDB में बदल दिया, खंडित तालिका गणना ने फिर से वापस गोली मार दी। यह अब तक के मेरे शोध के विपरीत है जो बताता है कि रनिंग ALTER TABLE table_name ENGINE=INNODB;
को विखंडन को ठीक करना चाहिए।
थोड़ी सी गुग्लिंग के बाद मैं भागा:
SELECT table_schema, table_name, data_free/1024/1024 AS data_free_MB
FROM information_schema.tables
WHERE engine LIKE 'InnoDB' AND data_free > 0
जो कथित रूप से सभी खंडित तालिकाओं को सूचीबद्ध करता है (यह वास्तव में खंडित तालिका के लिए mysqltuner आउटपुट के समान परिणाम लौटाता है)। प्रत्येक एकल प्रविष्टि के data_free_MB
स्तंभ में ठीक उसी संख्या है (वर्तमान में 7.00000000)।
यह वास्तव में एक वास्तविक समस्या है या कुछ mysqltuner गलत कर रहा है? यदि यह एक समस्या है, तो मैं इसे कैसे ठीक करूं?
संपादित करें
मुझे अधिक से अधिक संदेह हो रहा है कि मैं एक बेवकूफ हूं और यह कि 7MB का विखंडन पूरी फाइल के लिए है, प्रत्येक तालिका के लिए नहीं। क्या कोई पुष्टि कर सकता है कि मामला क्या होगा?
[!!] Total fragmented tables: 2314
जो कि मुझे पूरा यकीन है कि एक समस्या को इंगित करता है (दोहरे लाल विस्मयादिबोधक चिह्न के साथ)