हमारे पास एक साधारण मशीन है जो वर्चुअल मशीन पर चल रही है जो माईएसक्यूएल 5.5 डेटाबेस में अपना डेटा सराय इंजन के साथ बचाती है। लगभग तीन साल तक सब कुछ ठीक रहा, लेकिन अचानक यह बहुत धीमी हो गई।
उदाहरण के लिए, मेरे पास एक बहुत ही सरल टेबल होल्डिंग एड्रेस है:
CREATE TABLE `addresses` (
`address_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) CHARACTER SET latin1 NOT NULL,
`firstname` varchar(64) CHARACTER SET latin1 NOT NULL,
`street` varchar(64) CHARACTER SET latin1 NOT NULL,
`housenumber` varchar(16) CHARACTER SET latin1 NOT NULL,
`zip` varchar(5) CHARACTER SET latin1 NOT NULL,
`city` varchar(64) CHARACTER SET latin1 NOT NULL,
`email` varchar(64) CHARACTER SET latin1 NOT NULL,
`phone` varchar(16) CHARACTER SET latin1 NOT NULL,
`birthdate` date NOT NULL,
PRIMARY KEY (`address_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
यह तालिका लगभग 800 प्रविष्टियाँ रखती है जो वास्तव में बहुत अधिक नहीं है। लेकिन क्वेरी चल रही है
SELECT * FROM addresses
परीक्षण के उद्देश्यों के लिए, यह कभी खत्म नहीं होता है। मैंने सर्वर पर mysql CLI के साथ इसकी जाँच की: यह तालिका की कुछ पंक्तियों को आउटपुट करता है और तब तक प्रतीक्षा करता है जब तक कि यह अगली पंक्तियों को आउटपुट न कर दे।
तो शायद यह डेटा भेजने के चरण में एक समस्या है, लेकिन मुझे यकीन नहीं है।
VM में 2GB RAM है और केवल 320MB का उपयोग किया जाता है। CPU भी बहुत कम 1 से 2% तक चलता है। mytop सर्वर को ब्लॉक करने वाले अन्य प्रश्नों को नहीं दिखाता है। आईटी व्यवस्थापक ने कहा कि उन्होंने हार्डवेयर पक्ष में कुछ भी नहीं बदला है।
मैंने पहले से ही डेटाबेस सर्वर को पुनरारंभ करने, वर्चुअल मशीन को पुनरारंभ करने जैसी कुछ चीज़ों की कोशिश की। कुछ भी मदद नहीं की।
संपादित करें:
EXPLAIN SELECT * FROM addresses
मुझे यह परिणाम देता है:
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | addresses | ALL | NULL | NULL | NULL | NULL | 793 | |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)
mysql -u username -ppassword mydb -e 'SELECT * FROM addresses
धीमी गति से आउटपुट हो रही है, लेकिन `> test.txt` को जोड़ना, यह बहुत तेज़ चलता है। अब यह शायद एक अलग सवाल होगा !? मैं इस पर कैसे जांच कर सकता हूं?