2009-03-13 18 views
12

मुझे पता है कि इनोडब में लेनदेन का उपयोग करते समय डेडलॉक्स अनिवार्य रूप से होते हैं और यदि वे एप्लिकेशन कोड द्वारा ठीक से इलाज कर रहे हैं तो वे हानिरहित हैं - मैन्युअल कहता है, "बस इसे फिर से प्रयास करें"।माईस्क्ल/innodb में deadlocks का पता लगाने के लिए कैसे?

तो मैं सोच रहा था - आप डेडलॉक्स का पता कैसे लगाते हैं? क्या डेडलॉक कुछ विशेष mysql त्रुटि संख्या जारी करता है? यदि यह मायने रखता है तो मैं PHP के mysqli एक्सटेंशन का उपयोग कर रहा हूं।

धन्यवाद।

संपादित करें: समाधान नहीं मिला, देखें टिप्पणियाँ

उत्तर

13

http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html

1213 (ER_LOCK_DEADLOCK)

लेन-देन गतिरोध। आपको लेनदेन को फिर से चालू करना चाहिए।

+0

धन्यवाद! यही वह है जिसे मैं ढूंढ रहा था। –

+1

@ एसएलट लिंक टूटा हुआ है –

+0

@ एसएलओटी Google ने मुझे यहां ले जाया .... ऐसी चीजों को कहने के लिए अजीब जगह की तरह ^^ जब यह ऐसी जानकारी इकट्ठा करने के लिए एक जगह है – OZZIE

5

प्रयास करें MaatKit। इसमें एक डेडलॉक लॉगर है।

+4

Maatkit में समाहित कर दिया गया है [पेर्कोना टूलकिट] (http://www.percona.com/software/percona-toolkit/) हाल ही में। टूल को [pt-deadlock-logger] कहा जाता है (http://www.percona.com/doc/percona-toolkit/pt-deadlock-logger.html) और पूर्व में __mk-deadlock-logger__ था। – Mei

1

innotop का प्रयास करें, आपके लिए डेडलॉक का पता लगाएगा।

14

MySQL कमांड लाइन क्लाइंट (एक क्वेरी ब्राउज़र नहीं) से "इंजन इंजिनोड स्थिति दिखाएं" आपको डेडलॉक्स पर जानकारी देगा।

डेडलॉक्स भी असामान्य लेनदेन (आमतौर पर प्रोग्राम कीड़े) के कारण हो सकते हैं और जो व्यक्ति असामान्य लेनदेन चला रहा है उसे समस्या दिखाई नहीं देगी क्योंकि वे ठीक काम करेंगे (उनके डेटा के माध्यम से नहीं किया जाएगा)।

+0

यह केवल नवीनतम डेडलॉक दिखाएगा। – dr01

5

MONyog का उपयोग करने का प्रयास करें। INNODB स्थिति द्वारा रिपोर्ट किए गए डेडलॉक्स का पता लगाने के लिए मॉनीग के "डेडलॉक मॉनीटरिंग" विकल्प को सक्षम करें। जब कोई नया डेडलॉक होता है तो मॉनीग उपयोगकर्ता को अलर्ट भेज देगा। enter image description here

1

आप पर एक मैक कर रहे हैं:

$ काढ़ा स्थापित percona-टूलकिट

$ pt-गतिरोध-लकड़हारा -uroot --ask-पास स्थानीय होस्ट

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