2012-04-24 8 views
7

मैं वर्तमान में MySQL में अपने सभी डेटाबेस के लिए InnoDB का उपयोग कर रहा हूं, हालांकि मैंने अभी देखा है कि मेरी info_schema डेटाबेस उन तालिकाओं के लिए MyISAM का उपयोग करता है जो स्मृति नहीं हैं।MySQL डेटाबेस इंजन: info_schema के लिए MyISAM लेकिन अन्य डेटाबेस के लिए InnoDB

मैं एक InnoDB/MyISAM समस्या की जांच करने की प्रक्रिया में हूं। जबकि मुझे नहीं लगता कि यह इसका कारण है, मैं इस मिश्रण के बारे में चिंतित हूं। डेटाबेस मूल रूप से MyISAM के साथ स्थापित किया गया था। बाद में my.cnf फ़ाइल को इंजन को InnoDB पर रीसेट करने के लिए अपडेट किया गया था। मैं MySQL 5.5.10 का उपयोग कर रहा हूँ।

आपकी जानकारी_शेमा डेटाबेस MyISAM पर सेट होने के साथ क्या संभावित समस्याएं हो सकती हैं, लेकिन आपके सभी अन्य डेटाबेस MySQL पर सेट हैं?


मदद की तलाश में उन लोगों के लिए: यदि आप एक जवाब की तलाश में इस सवाल में आए या आप और अधिक जानना, अपने डिफ़ॉल्ट डेटाबेस इंजन देखना चाहते हैं:

show variables; 

करने के लिए एक डेटाबेस में इंजन तालिकाओं के लिए सौंपा देखें:

show table status; 

मेरे my.cnf सेटिंग्स:

[client] 
default-character-set=utf8 

[mysqld] 
log=/usr/local/var/mysql/mysqld.log 
character-set-server = utf8 
collation-server = utf8_general_ci 
lower_case_table_names=2 
default_storage_engine=InnoDB 

# Performance hacks: 
innodb_flush_method=nosync 
innodb_flush_log_at_trx_commit=0 

उत्तर

4

भंडारण इंजन प्रति-तालिका आधार पर है। एक नई तालिका बनाते समय डिफ़ॉल्ट स्टोरेज इंजन का उपयोग किया जाता है और आप नई तालिका के लिए स्टोरेज इंजन निर्दिष्ट नहीं करते हैं।

सिस्टम टेबल आपके द्वारा डिफॉल्ट स्टोरेज इंजन सेट करने के बावजूद MyISAM होता।

MySQL documentation से:

महत्वपूर्ण

परिवर्तित न करें MySQL प्रणाली mysql डेटाबेस में तालिकाओं InnoDB प्रकार के (जैसे उपयोगकर्ता या मेजबान के रूप में)। यह एक असमर्थित ऑपरेशन है। सिस्टम टेबल हमेशा MyISAM प्रकार का होना चाहिए।

यदि आप सीधे जानकारी_स्केमा टेबल से पूछताछ नहीं कर रहे हैं, तो प्रकारों को मिश्रण करने की कोई चिंता नहीं है।

संबंधित मुद्दे