मैं अनुकूलन का उपयोग करने वाले किसी भी प्रश्न की पहचान करने के लिए हमारे सर्वर पर धीमी क्वेरी लॉगिंग को सक्षम करने का प्रयास कर रहा हूं। बहुत सरल लगता है, हालाँकि मेरी फ़ाइल को नहीं लिखा जा रहा है। मुझे कोई त्रुटि या कुछ भी पसंद नहीं है, यह सिर्फ धीमी क्वेरी को लॉग इन नहीं करता है। मुझे मेरे कॉन्फ़िगर परिवर्तन के बाद mysql को पुनरारंभ करना याद है।
मैं MySQL Ver 5.1.61 का उपयोग कर रहा हूं। यहाँ मैं अपने.cnf में क्या है:
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
फ़ाइल /var/logs/my.slow.log का मालिक के रूप में mysql है, यह भी डीबगिंग के हित में है जो मैंने लॉग फाइल पर सभी को पढ़ा / लिखा।
मेरे पास long_query_time से ऊपर 1 में सेट है जैसा कि मैं देखना चाहता हूं कि क्या यह काम कर रहा है। मैंने इसे कम करने की कोशिश की है (उदाहरण 0.3), लेकिन मैं अभी भी कुछ भी लॉग इन नहीं कर रहा हूं। मुझे पता है कि मेरे ऐप की क्वेरीज़ 1 सेकंड से अधिक समय तक चल रही हैं और मैं SELECT sleep(10);
परीक्षण के लिए जानबूझकर लॉग क्वेरीज़ ( ) भी चला रहा हूं और लॉग अभी भी खाली है।
मैंने डॉक्स के माध्यम से देखा है, जो मैं देख सकता हूं वह काम कर रहा है। किसी के पास कोई सुझाव है जो मैं गलत कर रहा हूं? किसी भी सलाह की सराहना की जाएगी, बहुत धन्यवाद!
संपादित करें: जैसा कि टिप्पणियों में पूछा गया है मैंने क्वेरी चलाई:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
परिणाम:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
स्पष्ट रूप से मेरे विन्यास में परिवर्तन पर ध्यान नहीं दिया जा रहा है क्योंकि मेरा मानना है कि ये चूक हैं। मुझे पूरा यकीन है कि मेरी कनिष्ठ फाइल जो मैं बदल रहा हूं, उसे पार्स किया जा रहा है जैसे कि मैं एक अवैध मूल्य में डाल देता हूं mysql फिर से शुरू होने पर त्रुटि करेगा। यहां क्या हो सकता है?
एक और संपादन:
@RolandoMySQLDBA की सलाह लेने और [mysqld]
अपनी सेटिंग्स के तहत मेरी धीमी क्वेरी कॉन्फिगर लाइनों को ले जाने से बचत होने लगती है। अब उपरोक्त variable_value क्वेरी का परिणाम है:
1.0000000
/var/logs/my.slow.log
ON
हालाँकि मैं अभी भी फाइल नहीं देख रहा हूँ my.slow.log को लिखा जा रहा है। मुझे नहीं लगता कि यह एक अनुमतियाँ समस्या है क्योंकि फ़ाइल mysql के स्वामित्व में है और मैंने फ़ाइल पर सभी उपयोगकर्ताओं के लिए सभी अनुमतियाँ जोड़ दी हैं। क्या कोई ऐसा कारण सोच सकता है कि यह काम क्यों नहीं करेगा?
संपादित करें: हल! धीमी क्वेरी लॉग का मार्ग गलत था, यह / var / log * s * / my.slow.log के बजाय /var/log/my.slow.log होना चाहिए था । मदद के लिए सभी को धन्यवाद, मैंने आवंटित सीखा है!
SET GLOBAL log_output=FILE
यह मेरे लिए तय है।
SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');
और इसका आउटपुट पोस्ट करें ।