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ń?
performance
database-design
google-app-engine
performance-testing
Brian Ballsun-Stanton
źródło
źródło
Odpowiedzi:
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.
źródło
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.
źródło