Testowanie skalowalności procedury składowanej

14

Mam aplikację e-mail, która zostanie wezwana do dostarczenia do interfejsu użytkownika liczby nowych wiadomości dla danego użytkownika przy każdym ładowaniu strony. Mam kilka odmian rzeczy, które testuję na poziomie DB, ale wszystkie są wyabstrahowane przez przechowywane wywołanie proc.

Próbuję zatrzasnąć DB, aby zobaczyć, jaki byłby punkt krytyczny (liczba żądań na sekundę).

W skrócie, mam tabelę taką jak ten userId, newMsgCount z indeksem klastrowym na userId. SQL powinien być w stanie obsłużyć setki lub tysiące tych odpowiedzi na sekundę. Myślę, że laggard to moja aplikacja .NET.

Jak mogę uczynić to dobrym testem, aby osiągnąć wyniki testu na podstawie wydajności SQL?

Czy istnieje na to narzędzie, które może nadać mu zapisaną nazwę proc i parametr, aby mógł pundować moją DB?

Chcę sprawdzić, czy DB może zwrócić min. 250 odpowiedzi na sekundę.

kacalapy
źródło
1
Świetne pytanie. Chciałbym rozwinąć ją nieco bardziej ogólnie i zapytać: Jak ładujesz test swojej bazy danych?
Nick Chammas,

Odpowiedzi:

11

SQLQueryStress jest doskonałym narzędziem do testowania współbieżności na małą skalę, ale tak naprawdę nie jest w stanie wykonać testu obciążenia. Zaskakująco mało znany zestaw narzędzi jest dostępny za darmo od firmy Microsoft, który może poradzić sobie z większością scenariuszy testów warunków skrajnych programu SQL Server, narzędziami RML .

Bardzo krótki zarys narzędzi:

  • ReadTrace konwertuje ślady Profiler z plików .trc na .rml (Replay Markup Language).
  • OStress służy do odtwarzania plików .rml i .sql na serwerze.
  • ORCA (agent kontroli odtwarzania OStress) koordynuje odtwarzanie w rozproszonych instancjach OStress.
  • Reporter udostępnia raporty analizy wydajności.

Istnieje doskonały artykuł szybkiego startu od zespołu SQLCat, który zawiera przykładową bazę danych i obciążenia, Precision Performance dla Microsoft SQL Server przy użyciu RML Utilities 9.0

Masz możliwość albo profilowania aktywności w celu powtórki lub, być może bardziej odpowiednie w twoim scenariuszu, ręcznego podkręcania zestawu skryptów .sql, które następnie odtwarzasz przez OStress i ORCA.

Świetne narzędzia do testowania obciążenia i badania problemów z wydajnością.

Mark Storey-Smith
źródło
6

Jednym z narzędzi, którego możesz użyć, jest SQLQueryStress . W celu szybkiego uruchomienia należy podać: procedurę składowaną, iteracje i liczbę wątków. Następnie rozpocznij test warunków skrajnych. Wskaźniki takie jak sekundy procesora, odczyty logiczne itp. Zostaną wyświetlone.

StanleyJohns
źródło
4

Wygląda na to, że jesteś programistą .NET. Jednym ze sposobów byłoby napisanie małej aplikacji korzystającej z wielowątkowości i posiadającej tylko określoną liczbę równoczesnych trafień do bazy danych i procedury składowanej. Uruchom ślad, gdy to się dzieje.

Napisz kod aplikacji, aby zwiększyć liczbę współbieżnych wątków w określonym przedziale, jeśli chcesz automatycznie zwiększyć obciążenie programu SQL Server.

Właśnie tak bym to zrobił.

Thomas Stringer
źródło
Dlaczego nie napiszesz tej aplikacji, korzystając z mojego projektu Benchmark.NET o otwartym kodzie źródłowym i wykorzystując równoległy test porównawczy?
Andrei Rînea