Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn die gespeicherte MySQL-Prozedur zu langsam ist?

Was soll ich tun, wenn die gespeicherte MySQL-Prozedur zu langsam ist?

王林
王林Original
2020-09-27 14:48:323524Durchsuche

Lösung für das Problem, dass die gespeicherte MySQL-Prozedur zu langsam ist: Öffnen Sie zuerst die Konfigurationsdatei my.cnf und fügen Sie dann die Konfiguration [long_query_time=1] hinzu. Überwachen Sie dann die SQL-Anweisung über [tail -f /tmp/logs/mysqld .log]-Befehl; schließlich ist die Zieloptimierung ausreichend. 🔜 /tmp/logs/mysqld.log überwacht alle ausgeführten SQL-Anweisungen. Mit derselben Methode können Sie mysqlslowquery.log auf SQL-Anweisungen überwachen, deren Ausführungszeit long_query_time = 1 (Sekunden) überschreitet mysql seit Die definierte Funktion func_getDevice(); wird 15 Sekunden lang langsam ausgeführt, aber wir wissen nicht, welche SQL-Anweisung in dieser Methode die Leistung beeinflusst, daher gibt es einen zweiten Schritt.

Schritt 2: Geben Sie die MySQL-Befehlszeile ein und geben Sie

#执行的sql
log=/tmp/logs/mysqld.log 
#记录sql执行超过下面设置时间的sql
log-slow-queries = /tmp/mysqlslowquery.log
#执行时间大于等于1秒
long_query_time = 1
ein. Zu diesem Zeitpunkt wird eine detaillierte SQL-Ausführungsliste angezeigt. Standardmäßig werden jedoch nur 15 SQLs aufgezeichnet. Wenn die Methode mehr SQLs enthält, können Sie diese festlegen
mysql> set profiling=1;
mysql> select func_getDevice(1);
mysql> show profiles;
+----------+------------+-----------------------+
| Query_ID | Duration   | Query                 |
+----------+------------+-----------------------+
|        1 | 0.00250400 | select * from TDevice |
+----------+------------+-----------------------+
1 row in set (0.00 sec)
Was soll ich tun, wenn die gespeicherte MySQL-Prozedur zu langsam ist?Zu diesem Zeitpunkt können Sie genau sehen, welche SQL-Anweisung sich auf die Leistung auswirkt. Query_ID=1 select * from TDevice wirkt sich auf die Leistung aus.

mysql> set profiling_history_size=20;
mysql> show variables like 'profiling%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| profiling              | ON    |
| profiling_history_size | 15    |
+------------------------+-------+
2 rows in set (0.00 sec)
mysql> select func_getDevice(1);
mysql> show profiles;

Überprüfen Sie, ob der Index der Tabelle angemessen ist, und verbessern Sie ihn durch gezielte Optimierung .

Verwandte Empfehlungen: php-Training

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die gespeicherte MySQL-Prozedur zu langsam ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn