Jak sztucznie utworzyć wolne zapytanie w mysql?

16

Daję prezentację za kilka tygodni. Część tej wersji demonstracyjnej jest przeznaczona do rozwiązywania podstawowych problemów z mysql, w tym do korzystania z dziennika powolnych zapytań. Wygenerowałem bazę danych i zainstalowałem naszą aplikację, ale jest to czysta baza danych, dlatego trudno jest wygenerować wystarczającą liczbę problemów.

Próbowałem wykonać następujące czynności, aby uzyskać zapytania w dzienniku powolnych zapytań:

Ustaw wolny czas zapytania na 1 sekundę.

Usunięto wiele indeksów.

Podkreślił system:

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

Skrypty niektórych podstawowych wywołań stron internetowych za pomocą wget.

Nic z tego nie wygenerowało wolnych zapytań. Czy istnieje inny sposób sztucznego obciążenia bazy danych w celu wygenerowania problemów? Nie mam wystarczających umiejętności, aby napisać skomplikowany Jmeter lub inny generator obciążenia. Mam nadzieję na coś wbudowanego w mysql lub inną sztuczkę linuxową ponad stres.

Gray Race
źródło
1
+1 Za prośbę o spowolnienie czasu. Gdyby tak było w prawdziwych przypadkach: D
czerwony

Odpowiedzi:

5

Kasa mysqlslap . Możesz przekazać jedno z zapytań swojej aplikacji internetowej za pomocą opcji --query i określić współbieżnych klientów za pomocą opcji --concurrency.

HTTP500
źródło
Działa to najlepiej ... przy użyciu tego i kombinacji dekodowania bazy danych.
Gray Race
35

Całkowicie sztuczne, ale możesz użyć sleep()funkcji:

select sleep(10);

W dzienniku:

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);
Mark Wagner
źródło
Dziękuję za sugestię ... Sprawia, że ​​dziennik się powiększa, ale chciałbym, aby były to wiarygodne zapytania dotyczące aplikacji. W ten sposób mogę demo wyjaśnić i inne narzędzia diagnostyczne.
Gray Race
:) Hmm ... może strategiczne LOCK TABLESzadziała. To też może być zbyt niechlujne.
Mark Wagner,
1
Zwykle wybieraj * z ((wybierz * z bazy danych) x) i coraz bardziej pochłaniający robi dla mnie lewę.
alexyorke
Użyj, DO SLEEP(10);jeśli nie chcesz wyniku SLEEP w zapytaniu.
Rasmus Friis Kjeldsen
1

Być może cofnięcie tuningu bazy danych może pomóc? Na przykład zmniejszenie rozmiaru buforów kluczy?

agy
źródło