एक सर्वर की तुलना में एक सर्वर पर MySQL 10x धीमा है




performance compare (2)

यह जाँचने के लिए स्पष्ट पहली चीज होगी कि आप MySql कॉन्फ़िगरेशन फ़ाइल को क्वेरी के लिए उचित मात्रा में स्मृति का उपयोग कर रहे हैं .. जैसे कि key_buffer, सॉर्ट-बफर, इत्यादि ... मेरे पास कहीं ज्यादा स्मार्ट लोग हैं जो पूरे ब्लॉग हैं MySQL को कॉन्फ़िगर करने के लिए समर्पित

आप अपनी क्वेरी को "समझाने" के साथ भी शुरू कर सकते हैं कि क्या सबसे अधिक समय ले रहा है ... लेकिन यह सामान्यतः बाद में सामान्य उपयोग के लिए कुछ भी हो सकता है।

वास्तव में, आपके "लाइव" सर्वर में कैशिंग क्षमताएं होती हैं और इन प्रश्नों को बनाने के लिए कोर की संख्या दो बार होती है, और संभवतः सर्वर के बीच क्वेरी समय में अंतर को स्पष्ट करने के लिए पर्याप्त अश्वशक्ति और मेमोरी होने की संभावना है।

मेरे पास एक लाइव सर्वर और मेरा डेवलपर सर्वर है, और मुझे लगता है कि मेरे लाइव (देव) सर्वर पर प्रश्नों को 10x धीमी गति से चलाने के लिए, हालांकि लाइव सर्वर अधिक शक्तिशाली है और वे दोनों तुलनीय लोड चल रहे हैं यह डेटाबेस संरचना की बात नहीं है क्योंकि मैं बैकअप को अपने सर्वर से लाइव सर्वर में लोड करता हूं।

क्या किसी के पास कोई विचार है जहां मैं विसंगति की तलाश कर सकता हूं? यह एक MySQL config बात हो सकता है? मुझे कहाँ दिखना चाहिए?

लाइव सर्वर:

mysql> SELECT count(`Transaction`.`id`) as count, sum(`Transaction`.`amount`) as sum, sum(Transaction.citiq_margin+rounding + Transaction.citiq_margin_vat) as revenue FROM `transactions` AS `Transaction` LEFT JOIN `meters` AS `Meter` ON (`Transaction`.`meter_id` = `Meter`.`id`) LEFT JOIN `units` AS `Unit` ON (`Meter`.`unit_id` = `Unit`.`id`) WHERE (NOT (`Unit`.`building_id` IN ('1', '85')) AND NOT (`Transaction`.`state` >= 90)) AND DAY(`Transaction`.`created`) = DAY(NOW()) AND YEAR(`Transaction`.`created`) = YEAR(NOW()) AND (MONTH(`Transaction`.`created`)) = MONTH(NOW());
+-------+---------+---------+
| count | sum     | revenue |
+-------+---------+---------+
|   413 | 3638550 |  409210 |
+-------+---------+---------+
1 row in set (2.62 sec)

[[email protected] ~]# uptime
 17:11:57 up 55 days, 1 min,  1 user,  load average: 0.45, 0.56, 0.60

देव सर्वर (बैकअप से थोड़ी देर की देरी के कारण परिणाम गणना अलग है):

mysql>  SELECT count(`Transaction`.`id`) as count, sum(`Transaction`.`amount`) as sum, sum(Transaction.citiq_margin+rounding + Transaction.citiq_margin_vat) as revenue FROM `transactions` AS `Transaction` LEFT JOIN `meters` AS `Meter` ON (`Transaction`.`meter_id` = `Meter`.`id`) LEFT JOIN `units` AS `Unit` ON (`Meter`.`unit_id` = `Unit`.`id`) WHERE (NOT (`Unit`.`building_id` IN ('1', '85')) AND NOT (`Transaction`.`state` >= 90)) AND DAY(`Transaction`.`created`) = DAY(NOW()) AND YEAR(`Transaction`.`created`) = YEAR(NOW()) AND (MONTH(`Transaction`.`created`)) = MONTH(NOW());
+-------+---------+---------+
| count | sum     | revenue |
+-------+---------+---------+
|   357 | 3005550 |  338306 |
+-------+---------+---------+
1 row in set (0.22 sec)

[[email protected] test]$ uptime
 18:11:53 up 12 days,  1:57,  4 users,  load average: 0.91, 0.75, 0.62

लाइव सर्वर (2 x क्ओन क्वाडकोर):

processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 2395.000
cache size      : 12288 KB
physical id     : 0
siblings        : 8
core id         : 10
cpu cores       : 4

देव सर्वर (1 एक्स क्वाडकोर)

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Core(TM)2 Quad CPU    Q8300  @ 2.50GHz
stepping        : 10
microcode       : 0xa07
cpu MHz         : 1998.000
cache size      : 2048 KB
physical id     : 0
siblings        : 4
core id         : 3
cpu cores       : 4

लाइव सर्वर:

  1. CentOS 5.7
  2. MySQL ver 5.0.95

देव सर्वर:

  1. ArchLinux
  2. MySQL देखें 5.5.25 ए

इसलिए, मैं एक डाटाबेस और एक आभासी मशीन Centos, 1 CPU और 512MB स्मृति पर चलने पर प्रश्न चलाया: यह 0.3 सेकंड में उस क्वेरी का जवाब प्रदान करता है; सिस्टम भार 0.4 है: /

केवल वास्तविक अंतर यह है कि मैं उस सर्वर पर MySQL 5.5 चला रहा हूं। और ऐसा लगता है कि वास्तव में मेरे मामले में MySQL 5.0 से MySQL 5.5 तक 10x का प्रदर्शन सुधार हुआ है।

मुझे केवल यकीन है कि एक बार जब मैं Mysql 5.0 से Mysql 5.5 के लिए अपने लाइव सर्वर माइग्रेट किया है, मैं परिणामों के बाद एक बार मैंने यह किया है की पुष्टि करेंगे।





archlinux