Come si può creare artificialmente una query lenta in mysql?


15

Sto dando una presentazione pratica tra un paio di settimane. Parte di questa demo è per la risoluzione dei problemi di base di mysql, incluso l'uso del registro delle query lente. Ho generato un database e installato la nostra app ma è un database pulito e quindi difficile da generare abbastanza problemi.

Ho provato quanto segue per ottenere query nel registro delle query lente:

Impostare il tempo di query lento su 1 secondo.

Cancellati più indici.

Ha sottolineato il sistema:

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m

Scritto alcune chiamate di base alla pagina web usando wget.

Niente di tutto ciò ha generato query lente. Esiste un altro modo per sollecitare artificialmente il database per generare problemi? Non ho abbastanza competenze per scrivere un Jmeter complesso o un altro generatore di carico. Spero forse per qualcosa incorporato in mysql o un altro trucco di Linux oltre lo stress.


1
+1 Per aver chiesto di ottenere domande lente. Se solo fosse così in questi casi reali: D
rosso

Risposte:


5

Checkout mysqlslap . Puoi passare una delle query del tuo webapp con --query e specificare client simultanei con --currency.


Funzionava meglio ... usando questo e una combinazione di de-tuning del database.
Grey Race,

34

Totalmente artificiale ma puoi usare la sleep()funzione:

select sleep(10);

Nel registro:

Time                 Id Command    Argument
# Time: 110629 16:19:13
# User@Host: mysql[mysql] @ localhost []
# Query_time: 10.000218  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1309389553;
select sleep(10);

Grazie per il suggerimento ... Fa crescere il registro, ma mi piacerebbe che fossero domande legittime per l'app. In questo modo posso spiegare demo e altri strumenti diagnostici.
Grey Race,

:) Hmm ... forse una strategia LOCK TABLESfunzionerà. Anche questo potrebbe essere troppo clandestino.
Mark Wagner,

1
Di solito seleziona * da ((seleziona * dal database) x) e continua a farmi sempre più recrusive.
alexyorke,

Utilizzare DO SLEEP(10);se non si desidera il risultato di SONNO nella query.
Rasmus Friis Kjeldsen,

1

Forse il de-tuning del database potrebbe aiutare? Ad esempio riducendo la dimensione di key_buffers?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.