2011-08-04 17 views
7

मैं एक वेब अनुप्रयोग का बेंचमार्क कर रहा हूं, और मुझे एक समस्या है जो मेरे प्रश्नों में से लगभग 1% पर होती है, ज्यादातर अपडेट (लेकिन कभी-कभी INSERT)। मैंने उन अनुरोधों पर प्रोफाइलिंग की और ऐसा लगता है कि यह प्रश्न अंत चरण है जिसमें बहुत समय लगता है।यादृच्छिक समय पर "क्वेरी एंड" चरण बहुत लंबा

starting 0.000029 
checking permissions 0.000005 
Opening tables 0.000017 
System lock 0.000005 
init 0.000032 
Updating 0.000052 
end 0.000030 
**query end 1.825892** 
closing tables 0.000025 
freeing items 0.000020 
logging slow query 0.000007 
logging slow query 0.000029 
cleaning up 0.000008 

जैसा कि मैंने प्रलेखन माध्यम से चला गया

अंत: यह अंत में लेकिन ALTER तालिका के सफाई से पहले होता है, दृश्य बनाते हैं, हटाएँ, सम्मिलित करें, का चयन करें, या अद्यतन बयान ।

क्वेरी अंत: यह स्थिति एक प्रश्न संसाधित करने के बाद होती है लेकिन मुक्त वस्तुओं की स्थिति से पहले।

तो क्या इसका मतलब है कि मेरे अपडेट की सफाई में समय लग रहा है? यह कदम वास्तव में क्या करता है, मैं प्रदर्शन को कैसे सुधार सकता हूं?

धन्यवाद

उत्तर

11

अंक /etc/my.cnf

वहाँ एक इंटरलॉकिंग समस्या है जब एक से अधिक थ्रेड एक ही समय में फ़ाइल लिखना चाहते है में

innodb_flush_log_at_trx_commit = 0 

जोड़कर हल, इस तरह लॉग हर सेकेंड फ्लश किया जाएगा।

+0

बहुत धन्यवाद, वही समस्या थी। – Frode

+6

innodb_flush_log_at_trx_commit = 0 सेट करना हल्के ढंग से अपनाने का समाधान नहीं है, यह मूल रूप से आपके लेनदेन की स्थायित्व में परिवर्तन करता है! –

+2

सहमत हुए। Innodb_flush_log_at_trx_commit को निष्क्रिय रूप से सेट करना खतरनाक हो सकता है, और उत्तर भ्रामक है। –

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