# Testy wydajności baz danych

### Reguła TRZECH KLIKNIĘĆ

Jest to reguła mówiąca o tym, że baza danych ma sziałać szykbo, tzn. w taki sposób, że użytkownik czekając na wyniki zapytań powinien je otrzymać maksymalnie po trzech kliknięciach

### Kryteria optymalizacji baz danych:

- szacowane obciążenie sprzętu
- ile środków można przeznaczyć na modernizację dostosowując sprzęt do bazy danych
- należy zastosować kompromis: szybkość działania bazy danych <---> bezpieczeństwo bazy danych

### Narzędzia do testów baz danych:

Do testowania wydajności baz danych stosuje się dwa narzędzia: MUNIN oraz JMETER

Podczas testów za pomocą JMeter należy mieć zainstalowane oprogramowanie: JAVA TM SE Runtime Environment

### INSTALOWANIE sun-java6-jre w Debianie

Z odpowiednimi uprawnieniami instalujemy JRE poleceniem: sudo apt-get install sun-java6-sdk

Po zainstalowaniu pakietu poleceniem sudo java - vresion sprawdzamy czy pakiet został zainstalowany

### Instalowanie i uruchamianie JMeter

Binarka przychodzi pod postacią pliku .tar.gz. Należy go rozpakować w wybranym katalogu. W podkatalogu bin/ są skrypty uruchamiające JMeter pod różnymi systemami: jmeter.bat i jmeter-server.bat (Windows), jmeter i jmeter-server (Linuks).

Pobieramy JMeter ze strony projektu.

Po przejściu do katalogu /bin uruchamiamy w terminalu najpierw serwer-jmeter a następnie jmeter. po uruchomieniu programu zobaczymy okno:

### Tworzenie planu testów

Plan testu zawiera listę kroków, które będą wykonane podczas testu. Pozwala równiez na przechowywanie zmiennych statycznych do których będą zapisywane wartości wyekstrahowane z odpowiedzi na zapytania. Jest on hierarchiczny i do jego budowania są dostępne następujące składniki:

ThreadGroup

Każdy plan testu musi zawierać przynajmniej jedną grupę wątków. Grupy wątków są punktami startowymi testu - składniki wykonują się w ramach grupy wątków. Pozwala ona ustalić ilość wątków, czas tworzenia wątków (ramp-up period), ilość powtórzeń części testu.

Kontrolery

W Jmeter są dwa rodzaje kontrolerów:
- Samplers - pozwalają na generowanie zapytań (np. HTTPSampler - generuje zapytanie HTTP)
- Logic controllers - pozwalają sterować przepływem (np. IfControler - pozwala na wykonanie zapytania jeśli warunek jest spełniony).
Wszystkie one są szczegółowo opisane na stronie .

Samplers

Samplery wykonują żądania łącząc się z serverem WWW czy FTP. W Jmeter dostępne są m.in.:
- FTP Request
- HTTP Request
- JDBC Request - wysyla zapytanie SQL do bazy danych
- Java object request - pozwala wywołac obiekt implementujący interfejs JavaSamplerClient.
- JMS Point to Point - pozwala wrzucać/pobierać wiadomości z/do kolejek JMS'owych.

Logic controllers

Pozwalają sterować przepływem wykonania składników potomnych planu (wykonanie warunkowe, pętle, wykonanie w przypadkowej kolejności). Kontrolery logiki można zagnieżdżać.

Assertions

Asercje pozwalają zweryfikować czy odpowiedź na zapytanie zawiera określone wyrażenie regularne. Można też zastosować asercje XPath, które pozwalają zwalidować odpowiedź na zapytanie przy użyciu DTD, lub wpisać zapytanie XPath i jeśli wynik jest niepusty przyjąć, że asercja jest prawdziwa.

Timers

Składniki pozwalające opóżnić lub zsynchronizować poszczególne operacje. Domyślnie JMeter wysyła zapytania bez przerwy, co może prowadzić do jego przeładowania.

Configuration elements

Składniki pozwalające uprościć tworzenie planu poprzez zgrupowanie ustawień konfiguracyjnych. Np. adres ip dla wszystkich zapytań servera HTTP może być taki sam. Wtedy zamiast każdemu elementowi HTTPRequest konfigurować adres ip servera wystarczy dodać do kontenera nadrzędnego HTTPRequestDefaults, gdzie będzie skonfigurowany adres ip serwera. Pozwala również na obsługe ciasteczek czy autentykacje przy użyciu HTTP Basic.

Listeners

Składniki pozwalające zbierać wyniki np wyświetlić wykres (Graph Results) czy sprawdzić czy asercje są spełnione (Assertion Results). Może równiez być użyty w celu zapisania odpowiedzi na zapytania.

Pre-Processor Elements

Składniki pozwalające wykonać jakąś akcję przed wykonaniem zapytania. Użyteczne np. w przypadku gdy sesja jest zawarta w URL.

Post-Processor Elements

Analogicznie jak Pre-Processor Elements - pozwalają wykonać akcję po wykonaniu zapytania. Użyteczne do esktrahowania wartości z tekstu odpowiedzi.

⇒ Spis treści ⇐

⇐ PREV NEXT ⇒