14 listopada 2011

SQL Tipsy (1) – zapytanie na wielu serwerach

Debiut


Chciałbym zapoczątkować nową świecką tradycję na moim blogu. Pokusiłem się o nagranie 2 minutowego filmiku na którym prezentuje jak uruchamiać jedno zapytanie na wielu serwerach przy użyciu SQL Server Management Studio. Moim celem jest dzielenie się prostymi, aczkolwiek mam nadzieję, że przydatnymi "pomysłami" w jak najkrótszym czasie antenowym. Poniżej przykładowy filmik. Zachęcam do poświęcenia 140 sekund na obejżenie tego filmiku i oczywiście proszę o komentarze na temat takiej formy knowledge sharing.


Hope this helps.

9 komentarzy:

  1. Forma jest dobra, łatwiejsza do przyswojenia niż tekst.
    Pytanie czy w ten sposób można wysłać kilka razy zapytanie do jednego serwera i czy można w ten sposób sprawdzić działanie bazy przy wielu zapytaniach naraz?

    OdpowiedzUsuń
  2. Ta funkcjonalność SSMS nie nadaje się do stress testów, można do tego wykorzystać np. mechanizm SQL Profiler'a Reply (http://msdn.microsoft.com/en-us/library/ms189604.aspx). Przy odtwarzaniu tzw. trace'a można skonfigurować ilość równoległych połączeń.

    OdpowiedzUsuń
  3. Dzięki wielkie to zdaje się być to czego szukałem.

    OdpowiedzUsuń
  4. Ale z tego co widzę tam użycie multithreads dotyczy równoległego przetwarzania zapytań a nie wysyłania równoczesnych zapytań zgodnie z tym co znalazłem na stronie msdn
    Specify the number of replay threads to use concurrently. A higher number consumes more resources during replay, but replay is faster. Event ordering is not fully maintained when multiple threads are used.

    OdpowiedzUsuń
  5. Nie ma jakiegoś programu do testowania szybkości odpowiedzi bazy i pozwalającego symulować równoległe zapytania wielu użytkowników?

    OdpowiedzUsuń
  6. SQL Profiler będzie odtwarzał ten Trace równolegle, kilka wątków będzie uruchamiało te zapytania na twojej instancji.

    Rozumiem, że problem jest trochę inny. Masz zapytanie SELECT * FROM orders i uruchamiasz je na instancji SQL Servera. Zapisujesz trace. I teraz chciałbyś odtworzyć wielokrotnie ten trace równolegle. Na to pytanie ci nie odpowiem, bo po prostu nie znam narzędzia którym można odtwarzać równolegle ten sam trace.

    W poniższym artykule autor prezentuje prosty kod w C# który uruchamia kilka wątków dla jednej procedury (możesz wczytać twoje zapytania z pliku).

    http://www.sql-server-performance.com/2005/stress-test-part3/3/

    Odpal SQL Profiler'a i w kolumnie Duration będziesz miał czasy uruchamiania się zapytań na serwerze.

    Zachęcam cię do lektury dwóch artykułów, które może pomogą ustalić Ci co właściwie chciałbyś przetestować.

    http://www.sql-server-performance.com/2005/stress-test-part3/

    Drugi jest o RML utilities (zapewne tool SQL Nexus może też ci się przydać do analizy wydajności) i jest trochę zakręcony, ale mierzenie wydajności jako takiej też nie jest proste.

    http://sqlcat.com/sqlcat/b/technicalnotes/archive/2008/02/01/precision-performance-for-microsoft-sql-server-using-rml-utilities-9-0.aspx

    OdpowiedzUsuń
  7. dzięki wielkie za pomoc. Program do c# sam napisałem ale zastanawiałem się czy można to zrobić łatwiej i wygodniej. A artykuły przeczytam pewnie się przydadzą. Dzięki raz jeszcze

    OdpowiedzUsuń

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.