Ich bin der neue Betreuer einer Anwendung, die in der Produktion MySQL läuft. Der vorherige Betreuer hat keine Dokumentation mehr hinterlassen und kann nicht kontaktiert werden.Signifikanter Leistungsunterschied zwischen einem lokalen MySQL-Server und einem Produktions-MySQL-Server
Das Problem, das ich Gesicht ist, dass die folgende Anfrage etwa 10 Sekunden dauert auszuführen:
SELECT COUNT(*) FROM `users` WHERE (`active` = TRUE AND `deleted_at` IS NULL);
Es gibt etwa 170.000 Datensätze in der Tabelle users und ohne Indizes.
Die EXPLAIN-Befehl auf diese Anfrage:
mysql> EXPLAIN SELECT COUNT(*) FROM `users` WHERE (`active` = TRUE AND `deleted_at` IS NULL);
+----+-------------+-------+------+---------------+------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+--------+-------------+
| 1 | SIMPLE | users | ALL | NULL | NULL | NULL | NULL | 145407 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+--------+-------------+
Aktuelle Website-Eigentümer (nicht technische Person) sagte mir, dass Leistungen plötzlich vor 2 Wochen gesunken. Bevor ich also versuche, Indizes hinzuzufügen, habe ich die Produktionsdatenbank in meinen lokalen MySQL-Server ausgelagert. Die gleichen Anfragen dauern nur 4 Sekunden lokal.
Ich bin ziemlich überrascht von diesem Unterschied, und ich frage mich, ob es möglich ist, dass ein Problem auf dem OS oder MySQL-Server es erklären könnte? Lohnt es sich, auf diese Weise zu untersuchen? Wenn das so ist, wie? Wenn nicht, ist eine solche Leistung für eine solche Abfrage ohne Indizes "normal" (ich habe begrenzte Erfahrung mit SQL-Leistung)?
Auf dem Server:
$ mysql -u root --version
mysql Ver 14.14 Distrib 5.1.44, for unknown-linux-gnu (x86_64) using readline 5.1
$ cat /etc/redhat-release
CentOS release 5.4 (Final)
Lokale Maschine:
$ $ mysql -u root --version
mysql Ver 14.14 Distrib 5.1.42, for apple-darwin10.2.0 (i386) using EditLine wrapper
Dank!
EDIT für Traroth:
- RAM: 4GB auf die Produktion, 2GB auf dem lokalen Rechner
- Anfrage Caching: in der Tat auf dem lokalen Rechner nachfolgenden Anforderungen sind viel schneller, auf die Produktion auch es wird immer besser auch, aber immer noch langsam (im besten Fall etwa 5 Sekunden). Denkst du das ist normal?
- beide DB Verwendung InnoDB
- Dateisystem: Produktion Box ist ein VPS 'simfs' zeigt sich, wenn ich für das Dateisystem
Welche Menge an RAM haben Sie auf beiden Systemen? –