अस्पष्टीकृत InnoDB टाइमआउट


10

मैं समय-समय पर कुछ बहुत ही बुनियादी अपडेट देख रहा हूं और इसका कारण निर्धारित नहीं कर पाया हूं। एक उदाहरण:

// # क्वेरी_टाइम: ५१ लॉक_टाइम: ० रॉस_सेंट: ० Rows_examined: ०

UPDATE photos SET position = position + 1 WHERE (photo_album_id = 40470);

उसी लॉग में Lock_time> 0. के साथ कोई प्रविष्टि नहीं है। रनिंग show innodb statusकिसी भी संबंधित ताले को प्रकट नहीं करता है। यह समस्या मेरे ऐप सर्वर लॉग के आधार पर कम से कम 5 अलग-अलग तालिकाओं को प्रभावित करती है (जो Mysql::Error: Lock wait timeout exceededकि mysql-slow log में प्रत्येक संबंधित प्रविष्टि से संबंधित त्रुटि दिखाती है )।

यहाँ से कहाँ जाना है पर कोई विचार? मैं सभी दिशाओं में डेड-एंड मार रहा हूं। धन्यवाद।

संपादित करें:

बनाएँ टेबल `तस्वीरें` (
  `आईडी` इंट (11) पूर्ण ऑटो नहीं,
  `type` varchar (255) नहीं पूर्ण,
  `photo_album_id` int (11) पूर्ण नहीं,
  `user_id` int (11) पूर्ण नहीं,
  `शीर्षक` वर्चर (255) डिफ़ॉल्ट 'शीर्षकहीन',
  `विवरण` पाठ,
  `credit` varchar (255) डिफ़ॉल्ट NULL,
  `photo_file_name` varchar (255) डिफ़ॉल्ट NULL,
  `photo_content_type` varchar (255) डिफ़ॉल्ट NULL,
  `photo_file_size` int (11) डिफ़ॉल्ट NULL,
  `photo_updated_at` डेटाटाइम डिफ़ॉल्ट NULL,
  `स्थिति` इंट (11) डिफ़ॉल्ट '0',
  `विचार` इंट (11) डिफ़ॉल्ट '0',
  `folder` varchar (255) डिफ़ॉल्ट NULL,
  `प्रकाशित` टिंटिंट (1) डिफ़ॉल्ट '0',
  `प्रकाशित_तो` डेटाइम डिफ़ॉल्ट NULL,
  `create_at` डेटाटाइम डिफ़ॉल्ट NULL,
  `updated_at` डेटाटाइम डिफ़ॉल्ट NULL,
  `ऐल्बम_प्रकाशित` टिंटिंट (1) डिफ़ॉल्ट '0',
  `comment_count` int (11) डिफ़ॉल्ट '0',
  `Audio_file_name` varchar (255) डिफ़ॉल्ट NULL,
  `Audio_content_type` varchar (255) डिफ़ॉल्ट NULL,
  `Audio_file_size` int (11) डिफ़ॉल्ट NULL,
  `Audio_updated_at` डेटाटाइम डिफ़ॉल्ट NULL,
  `कवर` टिंटिंट (1) डिफ़ॉल्ट '0',
  `स्लग` वर्चर (255) डिफ़ॉल्ट NULL,
  `comments_count` int (11) डिफ़ॉल्ट '0',
  `delete_from_s3` छोटे (1) डिफ़ॉल्ट '0',
  `बैच` इंट (11) डिफ़ॉल्ट NULL,
  `ऑडियो` वर्चर (255) डिफ़ॉल्ट NULL,
  प्राथमिक कुंजी (`आईडी`),
  प्रमुख `अनुक्रमणिका_नियुक्ति_अनुलम_प्रकाशित` (` एल्बम_प्रकाशित`),
  प्रमुख `सूचकांक_फोटोस_ऑन_बैच` (` बैच`),
  प्रमुख `अनुक्रमणिका_नियंत्रण_संवाद_संवाद` (` टिप्पणी_संवाद`),
  कुंजी `अनुक्रमणिका_नियंत्रण_को_संस्कृत_त` (` सृजित_त`),
  प्रमुख `सूचकांक_फोटो___पत्रिका_रूप_स 3` (` हटाएं_रूप_स 3`),
  प्रमुख `सूचकांक_फोटो_सो_फोटो_बाल्ब_ड` (` फोटो_बालब_द`),
  प्रमुख `अनुक्रमणिका_पत्रिकाएँ_प्रकाशित` (` प्रकाशित`),
  प्रमुख `सूचकांक_फोटो___प्रकाशित_त` (` प्रकाशित_त`),
  कुंजी
  प्रमुख `अनुक्रमणिका_नियुक्ति_अनुसूचक_ (` user_id`)
) इंजन = InnoDB AUTO_INCREMENT = 42830 DEFAULT CHARSET = utf8

मूर्खतापूर्ण सवाल: उस टेबल पर आपके पास कौन से इंडेक्स हैं?
गयास

नमस्ते, कृपया संपादन देखें।
mvbl fst

हम्म, यह कष्टप्रद है क्योंकि यह ओरेकल में निदान करना इतना आसान है, आप बस 10046 ट्रेस स्तर 12 निर्धारित करते हैं और यह आपको बताएगा कि यह वास्तव में क्या कर रहा है। मैं इसके बारे में कुछ और सोचूंगा।
गयास

मैं एक InnoDB तालिका के साथ एक समान मुद्दा रहा हूँ, मुझे लगता है कि यह वेतन वृद्धि के साथ कुछ करना है। मैं कर रहा हूँ: UPDATE table SET <field>=<field>+1 WHERE <pk_field>=1;मेरी मेज हालांकि बहुत सरल है। यादृच्छिक पर यह उसी त्रुटि का कारण बनता है जो आपको मिल रही है। मेरा संस्करण है: 5.1.39। मैं आज कुछ समय बिता रहा हूं ताकि यह पता लगाने की कोशिश की जा सके कि अगर मुझे कुछ मिला तो मैं अपडेट कर दूंगा।

धन्यवाद, pls मुझे पता है कि तुम क्या पता है, हम अभी भी यह एक बाहर नहीं लगा है।
mvbl fst

जवाबों:


3

मुझे पता है कि यह वास्तव में देर हो चुकी है, लेकिन आपको वास्तव में SHOW इंजन INNODB STATUS के आउटपुट को कैप्चर करने की आवश्यकता है; उस क्वेरी के दौरान यह देखने के लिए कि यह प्रतीक्षा क्यों कर रहा है।

यदि यह एक विशिष्ट समय के दौरान बहुत कुछ होता है, तो उस आउटपुट को हर x सेकंड में पकड़ना आसान होगा और आशा है कि आप इसे कैप्चर करेंगे (या शायद कृत्रिम रूप से लोड उत्पन्न करेंगे)।


0

मैं कहता हूं कि डेटाबेस को सामान्य करें - और प्रॉपर इंडिसेस जोड़ें।

एक एकल फोटो को उस एल्बम के बारे में सभी जानकारी को ले जाने की आवश्यकता है - यह एल्बम के लिए एक अलग तालिका के लिए रोता है - और एक संबंध तालिका जिसमें केवल फोटोआईडी की मैपिंग शामिल है <-> एल्बम वही लागू होता है - यदि शामिल है - फोटोग्राफर के लिए (अलग टेबल और फोटोआईडी और फोटोग्राफर के बीच एक मैपिंग टेबल

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.