मुझे एक अजीब समस्या है। मैं PHP से एक बहुत बड़ी तालिका के खिलाफ एक MySQL क्वेरी चला रहा हूँ। क्वेरी समय एक मिनट से अधिक है, लेकिन यह मेरी समस्या नहीं है। ऐसा लगता है कि PHP हर 66 सेकंड में क्वेरी भेज रहा है।MySQL क्वेरी प्रत्येक 60 सेकेंड को पुनरारंभ करना?
show processlist;
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root | localhost | amrs | Query | 32 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
कुछ ही मिनट बाद, मैं फिर से जांच की गई:
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+---------+-------------------+----------+---------+------+---------------+--------------------------------------------------------
| 150018 | root | localhost | amrs | Query | 188 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
| 150021 | root | localhost | amrs | Query | 122 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
| 150023 | root | localhost | amrs | Query | 56 | Sending data | /*DEREK*/select ctlno, count(*) AS count from (omitted)
मैं पेज या कुछ भी पुनः लोड नहीं किया है। set_time_limit (0) को स्क्रिप्ट की शुरुआत के पास बुलाया जाता है। कष्टप्रद हिस्सा यह है कि पृष्ठ हाल ही में चलने वाले एक से जुड़ा हुआ प्रतीत होता है। तो अगर मैं 150018 को मारता हूं, तो कुछ भी बुरा नहीं होता है, लेकिन यदि मैं 150023 को मारता हूं तो इससे पहले कि कोई दूसरा उत्पन्न हो जाए, तो पृष्ठ "क्वेरी निष्पादन बाधित" त्रुटि के साथ आता है। 150018 अंततः अपने आप पर चलना समाप्त कर देगा लेकिन यह कोई अच्छा नहीं करता क्योंकि स्क्रिप्ट/पेज इसे प्राप्त नहीं करेगा।
किसी के पास कोई विचार है?
संपादित करें: शो पूर्ण processlist निम्नलिखित (संक्षिप्तता और गोपनीयता के लिए हटा दिया कुछ लाइनों के साथ) देता है:
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
| 147385 | root | localhost:44560 | amrs | Sleep | 14021 | | NULL
| 150248 | root | localhost | NULL | Query | 0 | NULL | show full processlist
| 150251 | root | localhost | amrs | Query | 1 | statistics | /*DEREK*/select ctlno, count(*) AS count from (snip)
+--------+---------+-------------------+----------+---------+-------+--------------+-----------------------------------------------------
आप हमें दिखा सकते हैं इस आदेश का परिणाम: 'पूर्ण proceslist दिखाएं;' क्वेरी निष्पादित करने के बाद? (2 कनेक्शन खोलें, # 1 = आपकी क्वेरी, # 2 = यह क्वेरी) –
ऐसा लगता है जैसा मैं अपेक्षा करता हूं। मैंने अन्य प्रश्नों से संबंधित कुछ पंक्तियों को छोड़ दिया, जैसा मैंने ऊपर किया था, लेकिन मैंने इसे ऊपर से निपटाया। – Derek
क्या आप टेबल संरचना दिखा सकते हैं? वहां कोई खंड नहीं है? –