Wykonywanie testów wydajnościowych TPC-C: narzędzie HammerDB

Jednym z trudniejszych zadań wdrożeniowych jest ocena i dobór wydajnej platformy sprzętowo-systemowej dla serwera bazy danych. Z powodu trudności w analitycznym szacowaniu wydajności serwera na planowanej platformie, powszechnie wykonujemy porównawcze testy wydajnościowe (benchmarki). Bardzo popularnym, standardowym benchmarkiem wydajnościowym jest TPC-C, opracowany we wrześniu 1992 roku przez organizację TPC. Benchmark TPC-C jest zorientowany na badanie wydajności systemów przetwarzania transakcyjnego (OLTP) – z dużą liczbą użytkowników oraz dużą liczbą operacji wprowadzania i modyfikowania danych biznesowych (ostatnia, piąta wersja specyfikacji TPC-C, pochodzi z początku roku 2010). Benchmark TPC-C wyrastał z TPC-A, wzbogacając go dziesięciokrotnie bardziej złożonymi transakcjami. Pozwalał na łatwą identyfikację obecności wąskich gardeł w systemie, wynikających m.in. z: rywalizacji o blokady na rekordach współbieżnie modyfikowanych przez wielu użytkowników (tzw. hotspots), niewłaściwego poziomu blokowania danych (np. na poziomie strony zamiast na poziomie rekordu), nieefektywnej obsługi buforów dyskowych, nieefektywnej komunikacji sieciowej oraz zapisów do dziennika powtórzeń w celu zapewnienia trwałości transakcji.

Benchmark TPC-C posługuje się dość realistycznym modelem systemu informatycznego dużej sieci hurtowni produktów. Badane transakcje są realizowane za pomocą aplikacji formularzowych (APP), obsługiwanych przez automat (emulator terminala – RTE – remote terminal emulator), przygotowany na potrzeby eksperymentu. Czasy odpowiedzi mierzone są po stronie terminala (uwzględniają komunikację sieciową i przetwarzanie w aplikacji-kliencie). Emulowane terminale realizują następujące operacje na dziewięciotabelowej bazie danych (zarządzanej przez serwer bazy danych – DS – database server): (1) nowe zamówienie – obejmuje wprowadzenie kompletnego zamówienia w ramach pojedynczej transakcji, (2) płatność – modyfikacja stanu konta klienta oraz modyfikacja statystyk sprzedaży gromadzonych na poziomie hurtowni i okręgu, (3) status zamówienia – odczytanie stanu ostatniego zamówienia danego klienta, (4) dostawa – wsadowe przetworzenie dziesięciu zamówień w ramach pojedynczej transakcji, (5) stany magazynowe – wyszukiwanie produktów, których stany magazynowe spadły poniżej określonego poziomu.

Benchamark TPC-C

Struktura logiczna wykorzystywanej bazy danych została przedstawiona na powyższym rysunku. Pomiary wydajności prowadzone są dla następujących rozmiarów tabel:
• tabela WAREHOUSE: liczba rekordów tak dobrana, aby na każdy rekord przypadało min. 9 tpmC
• tabela DISTRICT: 10 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela CUSTOMER: 30,000 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela HISTORY: 30,000 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela ORDER: 30,000 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela NEW_ORDER: 9000 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela ORDER_LINE: 300,000 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela STOCK: 100,000 rekordów * liczba rekordów tabeli WAREHOUSE
• tabela ITEM: 100,000 rekordów

Zadaniem automatu symulującego pracę użytkownika z aplikacją jest wywoływanie określonych funkcji formularzy oraz wprowadzanie danych zgodnie ze zdefiniowanym profilem obciążenia, obejmującym zarówno czasy przestoju, czasy odpowiedzi, jak i częstotliwości wykonywania aplikacji wzorcowych. Miarą wydajności systemu badanego przy wykorzystaniu benchmarku TPC-C jest przepustowość, wyrażana w jednostkach tpmC (transakcje na minutę – transactions per minute). W wyliczeniach przepustowości pod uwagę brane są jednak wyłącznie transakcje typu „nowe zamówienie”. Wtórną miarą jest cena badanego systemu (sprzęt i oprogramowanie) podzielona przez jego przepustowość ($/tpmC). Przy wyznaczaniu ceny pod uwagę brany jest trzyletni okres użytkowania.

Samodzielna implementacja benchmarku TPC-C jest dość kłopotliwa. Istnieją jednak na rynku gotowe produkty zawierające TPC-C. Jednym z moich ulubionych jest HammerDB (dawniej HammerOra) – aplikacja open-source (Linux, Windows) umożliwiająca wykonywanie benchmarków TPC-C, a także TPC-H na serwerach Oracle Database, Oracle TimesTen, MS SQL Server, PostgreSQL, MySQL, itp. Instalacja i obsługa HammerDB jest dość prosta – poniżej zamieszczam przykładowy zrzut ekranu.

HammerOra

Więcej o historii benchmarków wydajnościowych dla serwerów baz danych pisałem tutaj:[www.ploug.org.pl/konf_02/materialy/pdfy/Zakrzewicz.pdf].

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *