हम Windows Server 2008 R2 पर MySQL 5.1 चला रहे हैं।
हम देर से अपने डेटाबेस पर कुछ डायग्नोस्टिक्स कर रहे हैं और कुछ परेशान करने वाली कलाकृतियाँ मिली हैं जिन्हें हम समझा नहीं सकते हैं । जब हमें कुछ समय लगने वाले प्रश्न (> 2000 मी।) में प्रवेश करने के लिए हमने कुछ कोड जोड़े। परिणाम आश्चर्यजनक थे (और संभवतः हमारे गतिरोध के लिए एक स्पष्टीकरण)।
कभी-कभी प्रश्न, जो आमतौर पर बहुत कम समय (<10ms) लेते हैं, 4 से 13 सेकंड से ले रहे हैं। स्पष्ट होने के लिए, ये ऐसे प्रश्न हैं जो लगातार चल रहे हैं (कई बार एक दूसरे) और इन क्वेरी समय स्पाइक्स से पीड़ित नहीं हैं।
हम किसी भी स्पष्ट गलतियों की तलाश में अपने अनुक्रमितों के माध्यम से चले गए हैं और बहुत ज्यादा भाग्य नहीं था।
अपडेट करें
लोगों की तालिका:
| people | CREATE TABLE `people` (
`people_id` bigint(20) NOT NULL AUTO_INCREMENT,
`company_id` bigint(20) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`temp_password` varchar(10) DEFAULT NULL,
`reset_password_hash` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`phone` varchar(32) DEFAULT NULL,
`mobile` varchar(32) DEFAULT NULL,
`iphone_device_id` varchar(160) DEFAULT NULL,
`iphone_device_time` datetime DEFAULT NULL,
`last_checkin` datetime DEFAULT NULL,
`location_lat` double DEFAULT NULL,
`location_long` double DEFAULT NULL,
`gps_strength` smallint(6) DEFAULT NULL,
`picture_blob_id` bigint(20) DEFAULT NULL,
`authority` int(11) NOT NULL DEFAULT '0',
`active` tinyint(1) NOT NULL DEFAULT '1',
`date_created` datetime NOT NULL,
`last_login` datetime NOT NULL,
`panic_mode` tinyint(1) NOT NULL DEFAULT '0',
`battery_level` double DEFAULT NULL,
`battery_state` varchar(32) DEFAULT NULL,
PRIMARY KEY (`people_id`),
KEY `email` (`email`),
KEY `company_id` (`company_id`),
KEY `iphone_device_id` (`iphone_device_id`),
KEY `picture_blob_id` (`picture_blob_id`),
CONSTRAINT `people_ibfk_1` FOREIGN KEY (`company_id`) REFERENCES `companies` (`company_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `people_ibfk_2` FOREIGN KEY (`picture_blob_id`) REFERENCES `blobs` (`blob_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4658 DEFAULT CHARSET=utf8 |
इंडेक्स:
+--------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+
| people | 0 | PRIMARY | 1 | people_id | A | 3502 | NULL | NULL | | BTREE | |
| people | 1 | email | 1 | email | A | 3502 | NULL | NULL | YES | BTREE | |
| people | 1 | company_id | 1 | company_id | A | 3502 | NULL | NULL | | BTREE | |
| people | 1 | iphone_device_id | 1 | iphone_device_id | A | 3502 | NULL | NULL | YES | BTREE | |
| people | 1 | picture_blob_id | 1 | picture_blob_id | A | 3502 | NULL | NULL | YES | BTREE | |
+--------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+
हमारे पास सर्वर पर तालिका में ~ 5000 पंक्तियां हैं जो हमें परेशानी दे रही हैं।