Pobierz i umieść testy wydajności w Google BigTables (i innych zintegrowanych bazach danych)

17

Jakie są skuteczne sposoby przeprowadzania programowego testowania wydajności operacji na bazach danych, zwłaszcza w środowiskach, w których same bazy danych nie oferują dedykowanych narzędzi?

Na przykład w Google App Engine całe ładowanie stron jest oceniane jako jedna operacja, która może obejmować określone operacje na bazie danych. Ten problem prawdopodobnie występuje również w SQLite i innych zintegrowanych bazach danych. Ponieważ trudno jest całkowicie wyodrębnić (równoważne) selekcje i wstawki, które należy przetestować, czy istnieją jakieś zalecane narzędzia bazy danych do bardziej szczegółowej diagnostyki tego rodzaju zapytań?

Brian Ballsun-Stanton
źródło
Czy masz bezpośredni dostęp do danej bazy danych?
Stingervz
Tak, to ja piszę aplikację. I chociaż wydajność aplikacji to inne pytanie, dostaję dość poważne wyniki w paskudnym zapytaniu, które napisałem.
Brian Ballsun-Stanton
Czasami kilkanaście par oczu jest lepszym narzędziem diagnostycznym niż analizator zapytań ... (ok, nie tak często)
jcolebrand
@Brian Myślę, że lepiej byłoby na Stackoverflow z tego rodzaju pytaniami, ponieważ jest to bardziej pytanie programistyczne niż DBA.
IamIC
@IanC Drat. Staram się uzyskać podkład pod dużym stołem, a nie cały występ. Ale usunę je, jeśli ludzie nie uznają pytania za odpowiednie. (Próbuję również upewnić się, że witryna nie jest przez cały czas serwerem Oracle / sql-server / mysql)
Brian Ballsun-Stanton

Odpowiedzi:

1

Wydaje mi się, że Twoim problemem jest to, że próbujesz przetestować wskaźniki wydajności, które nie są dobrze obsługiwane w bazowej bazie danych. To bardzo utrudnia porównanie wydajności w różnych systemach, ponieważ podstawowe podejścia są bardzo różne. Nie sądzę, aby można było porównywać jabłka z jabłkami, tak jak nie sądzę, że można porównywać jabłka z jabłkami w podejściach typu ORDBMS do podejść typu RDBMS. Obawy dotyczące wydajności są po prostu zbyt różne i jeśli Stonebraker ma rację, że optymalizacja ORDBMS dla testów TPC-C nie trafia w sedno, to w przypadku systemów, które są jeszcze dalej od siebie, będzie to niemożliwe. (Myślę jednak, że jest tam, tylko tam, gdzie funkcjonuje funkcja ORDBMS.)

Myślę, że musisz być szczery, aby spojrzeć na to, jak korzystasz z każdego systemu i zbudować narzędzie porównawcze oparte na podejściu, które zastosujesz przy każdym z nich. Następnie możesz powiedzieć przynajmniej dla tego przepływu pracy, że test porównawczy pokazuje coś konkretnego. Nie rozumiem jednak, jak można uogólniać. Możesz dalej uruchomić go w narzędziu do profilowania, aby uzyskać dodatkowe informacje o tym, gdzie spędza się czas na uruchomieniu testowym na różnych silnikach.

Jednak analiza porównawcza db jest bardzo trudna do uzyskania sensu w najlepszych okolicznościach, a gdy porównujesz odmienne systemy, niemożliwe jest uogólnienie.

Chris Travers
źródło
0

Appstats jest kluczowym narzędziem do pomiaru wydajności App Engine. Wyświetli czas wykorzystany dla każdego RPC, w tym magazyn danych, pamięć podręczną, pobieranie adresu URL i żądania poczty na wykresie graficznym. Zwykle żądania pojawiają się jako „schody”, gdzie każde żądanie rozpoczyna się w punkcie, w którym poprzednie żądanie zakończyło się, w następnym wierszu w dół.

Jeśli używasz zaawansowanych żądań asynchronicznych w ndb, możesz zobaczyć, że żądania odbywają się równolegle.

To narzędzie było dla mnie ogromną pomocą w zrozumieniu, gdzie spędzany jest czas i jak optymalizować zapytania.

Brent Washburne
źródło