Skip to content

Database benchmark

Table of contents generated with markdown-toc

Opis

Do aktywnego monitoringu potrzebujemy benchmarków. Jednym z nich ma być serwer bazy danych. Oczekiwania wobec benchmarka:

  1. Konteneryzacja - nie musi być "oficjalna", może być utrzymywana przez nas. W przypadku nie utrzymywanych projektów z kontenerami preferowane przetrzymywanie lokalne.
  2. Uruchamianie benchmarka musi być ograniczalne zasobowo (ustalenie limitów prockowych i pamięciowych). Ograniczenie nie musi być wspierane przez benchmark, może być realizowane przez dockera/system.
  3. Benchmark ma zwracać conajmniej jedną metrykę liczbową, która będzie mogła być porównywana pomiędzy kolejnymi uruchomieniami.

Research

Materiały

HammerDB

Źródło

https://github.com/TPC-Council/HammerDB

Kontener

https://github.com/webysther/hammerdb-docker

Przykład

Testy można w łatwy sposób oskryptować, uzywajac tcla, poniżej przykłady:

Udało mi się przeprowadzić dla PostgreSQL, konfiguracja samego benchmarku wydaje się być odrobinę złożona i trwa on stosunkowo długo (choć może to być kwestia konfiguracji). Zaletą tego narzędzia jest to, że na koniec zwraca dwie liczby (TPM i NOPM), które powinno dać się łatwo wyłuskać.

Przydatne metryki

  • TPM
  • NOPM

Sysbench

Źródło

https://github.com/akopytov/sysbench

Kontener

https://github.com/ashraf-s9s/sysbench-docker

Przykład

W kontenerze znajdują się gotowe skrypty testowe w Lua. Przetestowałem OLTP na MySQL (tutaj z kolei więcej problemów było z konfiguracją samej bazy). Można zdefiniować wprost czas trwania testu, ilość wątków, częstotliwość logów itd. Na koniec zwraca podsumowanie wyników, zawierające takie parametry, jak: queries performed, transactions, queries, latency, threads fairness.

Przydatne metryki

  • queries performed
  • transactions
  • queries
  • latency
  • threads fairness

Propozycja implementacji

inprogress: nadal waham się które narzędzie wybrać

Edited by Cyprian Kleist