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

MyISAM तालिकाओं के साथ InnoDB तालिकाओं में शामिल होना

मुझ पर तुरंत जो उछल पड़ता है वह है MyISAM .

ASPECT #1 :JOIN ही

जब भी MyISAM और InnoDB से जुड़े जॉइन होते हैं, तो MyISAM की क्वेरी में शामिल होने और एमवीसीसी MyISAM डेटा पर लागू नहीं किया जा सकता है। एमवीसीसी कुछ मामलों में InnoDB पर भी लागू नहीं किया जा सकता है।

ASPECT #2 :MyISAM की भागीदारी

दूसरे दृष्टिकोण से, यदि कोई MyISAM तालिका INSERTs, UPDATEs, या DELETEs के माध्यम से अद्यतन की जा रही है, तो JOIN क्वेरी में शामिल MyISAM तालिकाओं को अन्य DB कनेक्शनों से लॉक कर दिया जाएगा और JOIN क्वेरी को MyISAM तालिकाओं को पढ़े जाने तक प्रतीक्षा करनी होगी। दुर्भाग्य से, यदि JOIN क्वेरी में InnoDB और MyISAM का मिश्रण है, तो InnoDB तालिकाओं को लिखने से रोके जाने के कारण JOIN क्वेरी में अपने MyISAM भागीदारों की तरह एक आंतरायिक लॉक का अनुभव करना होगा।

ध्यान रखें कि MVCC अभी भी READ-UNCOMMITTED और REPEATABLE-READ लेनदेन को ठीक काम करने की अनुमति देगा और कुछ निश्चित होने दें डेटा के दृश्य अन्य लेनदेन के लिए उपलब्ध हो सकते हैं। मैं इसे READ-COMMITTED और SERIALIZABLE . के लिए नहीं कह सकता ।

ASPECT #3 :क्वेरी ऑप्टिमाइज़र

MySQL एक अनुकूलित EXPLAIN योजना निर्धारित करने के लिए इंडेक्स कार्डिनैलिटी पर निर्भर करता है। इंडेक्स कार्डिनैलिटी MyISAM तालिकाओं में तब तक स्थिर रहती है जब तक कि तालिका में बहुत सारे INSERT, UPDATE और DELETE न हो जाएं, जिसके द्वारा आप समय-समय पर OPTIMIZE TABLE चला सकते हैं। MyISAM तालिकाओं के विरुद्ध। InnoDB इंडेक्स कार्डिनैलिटी कभी स्थिर नहीं होती !!! यदि आप SHOW INDEXES FROM *innodbtable*; run चलाते हैं , आप हर बार उस कमांड को चलाने पर इंडेक्स कार्डिनैलिटी में बदलाव देखेंगे। ऐसा इसलिए है क्योंकि InnoDB कार्डिनैलिटी का अनुमान लगाने के लिए इंडेक्स में गोता लगाएगा। भले ही आप OPTIMIZE TABLE run चलाते हैं एक InnoDB तालिका के विरुद्ध, जो केवल तालिका को डीफ़्रैग्मेन्ट करेगा। OPTIMIZE TABLE ANALYZE TABLE चलाएगा तालिका के विरुद्ध सूचकांक आँकड़े उत्पन्न करने के लिए आंतरिक रूप से। यह माईसाम के लिए काम करता है। InnoDB इसे अनदेखा करता है।

आपके लिए मेरी सलाह है कि आप सब कुछ करें और सब कुछ InnoDB में परिवर्तित करें और तदनुसार अपनी सेटिंग्स को अनुकूलित करें।

अपडेट 2012-12-18 15:56 EDT

मानो या न मानो, अभी भी InnoDB/MyISAM में शामिल होने पर एक खुला टिकट है अद्यतन के लिए चयन के दौरान . यदि आप इसे पढ़ते हैं, तो यह संकल्प को इस प्रकार सारांशित करता है:ऐसा न करें !!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में टेबल को अनपिवोट कैसे करें

  2. पॉप्युलेटिंग ड्रॉपडाउन - PHP अजाक्स MySQL

  3. त्रुटि 1022 - लिख नहीं सकता; तालिका में डुप्लिकेट कुंजी

  4. आपका MySQL इंस्टालेशन सुरक्षित करना

  5. डेटाबेस आयात पर पारित स्क्रिप्ट टाइमआउट देना