कैश कुंजी के हिस्से के रूप में अंतर्निहित तालिकाओं के अंतिम अद्यतन समय का उपयोग करते हुए, मुझे यादगार में डेटाबेस क्वेरी के (भारी) संसाधित परिणामों को संग्रहीत करने में सफलता मिली है। माईसाम टेबल के लिए, वह अंतिम बार बदला गया समय SHOW TABLE STATUS
में उपलब्ध है। दुर्भाग्यवश, यह आमतौर पर इनो डीबी टेबल के लिए सामान्य है।मैं कैसे निर्धारित कर सकता हूं कि एक InnoDB तालिका आखिरी बार कब बदल दी गई थी?
MySQL 4.1 में, SHOW TABLE STATUS
लाइन में एक InnoDB के लिए ctime आमतौर पर इसका वास्तविक अंतिम अपडेट समय था, लेकिन यह MySQL 5.1 के लिए सच नहीं प्रतीत होता है।
तालिका में एक डेटाटाइम फ़ील्ड है, लेकिन यह केवल तब दिखाता है जब एक पंक्ति संशोधित की जाती है - यह उस पंक्ति के हटाने का समय नहीं दिखा सकता है जो अब और नहीं है! तो, मैं वास्तव में MAX(update_time)
का उपयोग नहीं कर सकता।
यहां वास्तव में मुश्किल हिस्सा है। मेरे पास कई प्रतिकृतियां हैं जिन्हें मैं पढ़ता हूं। क्या मैं उस तालिका की स्थिति को समझ सकता हूं जो वास्तव में लागू होने पर भरोसा नहीं करता है?
थोड़ी देर के लिए इस पर काम करने के बाद मेरा निष्कर्ष यह है कि यह जानकारी सस्ता रूप से प्राप्त करने के लिए संभव नहीं है। मैं संभवत: उस समय तक डेटा कैश करने जा रहा हूं जब तक कि तालिका को बदलने की उम्मीद न हो (यह दिन में एक बार अपडेट हो), और क्वेरी कैश को यह कहने में सहायता करें कि यह कहां कर सकता है।
मन में अगर 2.nd मार्ग जाने के बारे में InnoDB से चलाता रखें: "नोट वर्तमान में, कैस्केड विदेशी कुंजी क्रियाएं ट्रिगर्स को सक्रिय नहीं करती हैं।" ([13.2.2.5। विदेशी कुंजी प्रतिबंधों से] (http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html)) –