पिछले कई निर्दोष गतिरोध देखें


12

मैं देखता हूं कि मैं mysql / innodb में नवीनतम गतिरोध देख सकता हूं, लेकिन क्या पिछले गतिरोधों को देखने का कोई तरीका है? हमारे पास दो गतिरोध मुद्दे हैं, एक महत्वपूर्ण और दूसरा नहीं। कम महत्वपूर्ण गतिरोध दिन में कई बार होता है इसलिए यह "नवीनतम" गतिरोध बन जाता है।

जवाबों:


15

एक सेटिंग है जो MySQL 5.5.30: innodb_print_all_deadlocks में शुरू की गई थी

जब यह विकल्प सक्षम हो जाता है, तो InnoDB उपयोगकर्ता लेनदेन में सभी गतिरोधों के बारे में जानकारी mysqld त्रुटि लॉग में दर्ज की जाती है। अन्यथा, आप SHOW इंजन INNODB STATUS कमांड का उपयोग करके केवल अंतिम गतिरोध के बारे में जानकारी देखते हैं। एक कभी-कभी InnoDB गतिरोध जरूरी नहीं कि एक मुद्दा हो, क्योंकि InnoDB तुरंत स्थिति का पता लगाता है, और स्वचालित रूप से लेनदेन में से एक को वापस रोल करता है। आप इस विकल्प का उपयोग इस समस्या का निवारण करने के लिए कर सकते हैं कि डेडलॉक क्यों हो रहा है यदि किसी अनुप्रयोग में रोलबैक का पता लगाने और उसके ऑपरेशन को पुनः प्रयास करने के लिए उपयुक्त त्रुटि-हैंडलिंग तर्क नहीं है। गतिरोधों की एक बड़ी संख्या डीएमएल या चयन जारी करने वाले लेनदेन के पुनर्गठन की आवश्यकता को इंगित कर सकती है ... कई तालिकाओं के लिए अद्यतन विवरण के लिए, ताकि प्रत्येक लेनदेन उसी क्रम में तालिकाओं तक पहुंच जाए, इस प्रकार गतिरोध की स्थिति से बचा जाए।

बस इस सेटिंग को इसमें जोड़ें my.cnf

[mysqld]
innodb_print_all_deadlocks = 1

या

[mysqld]
innodb_print_all_deadlocks = on

आपको mysql को पुनरारंभ करने की आवश्यकता नहीं है। बस mysql में लॉगिन करें और चलाएं

mysql> SET GLOBAL innodb_print_all_deadlocks = 1;

or

mysql> SET GLOBAL innodb_print_all_deadlocks = 'ON';

यह सेटिंग मेरे लिए भी नई है।

इसे आज़माइए और हमें बताइए कि आप क्या सोचते हैं !!!


हम 5.5.34 पर चल रहे हैं। क्या हमारे संस्करण के लिए कोई विकल्प हैं?
gwgeller

मेरी गलती। यह 5.5 dev.mysql.com/doc/refman/5.5/en/… में है । मैं अपना जवाब अपडेट करूंगा।
RolandoMySQLDBA

विज्ञापित के रूप में काम करता है, धन्यवाद! मैंने sql का उपयोग करके सेटिंग बदल दी है, इसलिए मुझे पुनरारंभ नहीं करना पड़ा। संयोग से कम गंभीर गतिरोधों की एक जोड़ी हुई और त्रुटि लॉग में दिखाई दी।
gwgeller

रनटाइम पर मान सेट करना मेरे लिए काम नहीं करता है, यह त्रुटि लॉग में कुछ भी नहीं लिखता है।
lapo

1
@ जोर्डन एडब्ल्यूएस कभी भी सुपर नहीं देता है और मैंने 6 साल पहले इसका उल्लेख किया था: dba.stackexchange.com/questions/34525/… । वे यह सुनिश्चित करने के लिए ट्रिगर का उपयोग करते हैं कि आप हैक mysql.userऔर चला नहीं सकते FLUSH PRIVILEGES;
रोलैंडमाइसीडीडीबीए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.