Identifica la query lenta senza registri di query lenta in MySQL Server
-
26-09-2020 - |
Domanda
Mi chiedo che ci sia altro modo di controllare le nostre query lente senza registrare la query lenta.Supponiamo, ho un server ad ottaborly impegnato non può permettersi di registrare molto per salvare memoria e I / OS.Quindi, c'è qualche altro modo disponibile per verificare se ho una query lenta?Lo so, possiamo fare profilazione della query ma ancora non sono sicuro di cosa fare esattamente per identificare quale query è quella che prende la maggior parte del tempo e della memoria.
Ho appena iniziato l'amministrazione di MySQL e non è sicuro di come gestire questo.Qualsiasi orientamento sarà molto apprezzata.
Soluzione
Se non si desidera abilitare affatto il registro delle query lente, ho un suggerimento
È possibile utilizzare pt-query-digest < / a> su un intervallo di tempo.
L'ho suggerito un paio di volte nella DBA Stackexchange
- .
-
Nov 24, 2011
: MySQL General Query Log Effects Effetti -
Apr 24, 2012
: Indagare al picco in MySQL Throughput . -
Jul 26, 2012
: Cosa sta correndo in questo momento? < / li >.
Se guardi il mio Nov 24, 2011
link , Ho fornito uno script di shell che puoi crontab per lanciare PT -Query-digest .
Dai una prova !!!
Altri suggerimenti
È possibile eseguire la seguente dichiarazione in un ciclo in uno script che attiva l'istruzione ogni 10 secondi per esempio.
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where time>10 and command<>"Sleep"'
Puoi personalizzarlo per darti più o meno informazioni a seconda della query che si rilascia.
mysql> desc INFORMATION_SCHEMA.PROCESSLIST;
+---------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| ID | bigint(21) unsigned | NO | | 0 | |
| USER | varchar(16) | NO | | | |
| HOST | varchar(64) | NO | | | |
| DB | varchar(64) | YES | | NULL | |
| COMMAND | varchar(16) | NO | | | |
| TIME | int(7) | NO | | 0 | |
| STATE | varchar(64) | YES | | NULL | |
| INFO | longtext | YES | | NULL | |
| TIME_MS | bigint(21) | NO | | 0 | |
| ROWS_SENT | bigint(21) unsigned | NO | | 0 | |
| ROWS_EXAMINED | bigint(21) unsigned | NO | | 0 | |
+---------------+---------------------+------+-----+---------+-------+
11 rows in set (0.00 sec)
.
Per non salvare la stessa query molte volte, è possibile utilizzare l'hash della query come chiave unica.