Ich werde in ein paar Wochen eine Präsentation geben. Ein Teil dieser Demo ist für die grundlegende Fehlersuche in MySQL gedacht, einschließlich der Verwendung des langsamen Abfrageprotokolls. Ich habe eine Datenbank generiert und unsere App installiert, aber es ist eine saubere Datenbank und daher schwierig, genug Probleme zu generieren.
Ich habe Folgendes versucht, um Abfragen im langsamen Abfrageprotokoll abzurufen:
Setzen Sie die langsame Abfragezeit auf 1 Sekunde.
Mehrere Indizes gelöscht.
Betonte das System:
stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m
Skript für einige grundlegende Webseitenaufrufe mit wget.
Nichts davon hat zu langsamen Abfragen geführt. Gibt es eine andere Möglichkeit, die Datenbank künstlich zu belasten, um Probleme zu generieren? Ich habe nicht genug Fähigkeiten, um ein komplexes Jmeter oder einen anderen Lastgenerator zu schreiben. Ich hoffe vielleicht auf etwas, das in MySQL eingebaut ist, oder einen anderen Linux-Trick, der über Stress hinausgeht.
quelle
Antworten:
Kasse mysqlslap . Sie können eine der Abfragen Ihrer Webanwendung mit --query übergeben und gleichzeitig Clients mit --concurrency angeben.
quelle
Völlig künstlich, aber Sie können die
sleep()
Funktion verwenden:Im Protokoll:
quelle
LOCK TABLES
funktioniert eine strategische . Das kann auch zu klobig sein.DO SLEEP(10);
Sie diese Option, wenn das Ergebnis von SLEEP nicht in Ihrer Abfrage enthalten sein soll.Vielleicht hilft es, die Datenbank zu optimieren? Zum Beispiel die Größe von key_buffers reduzieren?
quelle