Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

[PL] "Co to za query?" – przygrywka do konkursu

Krok 0. Idea

Jakiś czas temu przyszło mi do głowy, że fajnie byłoby urządzić mały konkurs, którego celem byłoby układanie zapytań do podanych planów wykonania. Celem takiego konkursu byłoby poznanie elementów planów wykonania (zarówno graficznych planów, jak i ich reprezentacji XML). Jak takie układanie zapytań mogłoby wyglądać? Przykład.

Dostajesz plik .sqlplan, który po otwarciu w SQL Server Management Studio wygląda tak:

image

To, czego na tym planie nie ma, to samo zapytanie (dzięki temu zabawa jest możliwa). Oczywiście, na pierwszy rzut oka nie widać wszystkiego, więc najeżdżasz kursorem myszy na ikonkę oznaczającą skanowanie indeksu (pierwsza od prawej) i widzisz na przykład:

image

Dalej już jest łatwo (choć dla pełnego obrazu lepiej zawsze obejrzeć strukturę XML pliku .sqlplan). Wiesz, z jakiej tabeli pobrano dane oraz jakie kolumny zostały wybrane (Output List na rysunku powyżej). Wychodzi na to, że powyższy plan może być wygenerowany dla zapytania:

SELECT * FROM HumanResources.Department

To oczywiście zapewne nie jedyne zapytanie, dla którego ów plan mógł zostać wygenerowany, ale ten fakt tylko powoduje, że zabawa może być jeszcze lepsza ;-)

Ten banalny przykład pokazuje ideę. Oczywiście docelowo stopień komplikacji zapytań będzie większy :-)

Krok 1. Materiały

"No dobra" – mógłby ktoś powiedzieć - "Ale co, jeśli nie znam się na planach wykonania zapytań?". To może czas zacząć się znać choć trochę? ;-) Materiałów jest sporo. Zacząć można od e-booka "Dissecting SQL Server Execution Plans" autorstwa Granta Fritchey’a. Bardzo dobre objaśnienia zawierają też książki z serii "Inside SQL Server 2005" (lub 2008). A i tak zawsze można sięgnąć do korzeni, czyli do Books Online.

Krok 2. Rozgrzewka

Czas na rozgrzewkę. Od tego, czy znajdą się zapaleńcy chętni do zabawy, uzależniam, czy dojdzie do kroku 3. czyli do konkursu :-)

Zasady rozgrzewki:

  • instalujesz SQL Server 2008 oraz bazę danych AdventureWorks2008 (wszystkie zapytania są wykonywane na tejże bazie, ewentualnie można użyć bazy AdventureWorks na SQL Server 2005, ale nie gwarantuję sukcesu),
  • ściągasz plik (pliki) .sqlplan,
  • oglądasz je w Management Studio (lub jakkolwiek inaczej, możesz równie dobrze przeglądać kod XML w Notatniku),
  • jeśli masz propozycję zapytań, dla których zostały wygenerowane podane plany, piszesz do mnie maila na adres pawelp@plssug.org.pl (jako tytuł maila podaj: Co to za query - rozgrzewka), w treści maila podajesz kody T-SQL zapytań, dla których udało Ci się rozwiązać zadanie,
  • nie psuj zabawy innym i nie pisz rozwiązań w komentarzu do tej notki,
  • jako dobrą odpowiedź do zadania rozumiem zapytanie, które wygeneruje zadany plan wykonania w sensie operatorów, predykatów, output list etc. – dane liczbowe ilustrujące statystyki wykonania zapytania mnie nie interesują.

Na najszybszych, najaktywniejszych i oczywiście na najlepszych zawodników biorących udział w rozgrzewce czekają niespodzianki ;-)

Zadania na rozgrzewkę:

Poniżej 4 proste zadania na rozgrzewkę. Naprawdę proste. Nie powinno być problemów z ich rozwiązaniem. Jak okaże się, że zabawa jest fajna, napoczniemy konkurs i kolejne zadania będę publikował cyklicznie powiedzmy po 1-2 tygodniowo.

[Zadanie 1] – "Panie i Panowie"
[Zadanie 2] – "Zakupy VIP-ów"
[Zadanie 3] – "W magazynie"
[Zadanie 4] - "Licznik władzy"

A zatem… Zachęcam do wzięcia udziału w rozgrzewce!

Na odpowiedzi na zadania z rozgrzewki czekam aż do końca miesiąca kwietnia (data może ulec zmianie – na skutek wcześniejszego ogłoszenia zwycięzców tej fazy konkursu).

Krok 3. Konkurs

Jak napisałem w kroku 3. – to, czy dojdzie do konkursu (choć i za rozgrzewkę można jakiś gadżecik capnąć ;-)), zależy od Was :-) Jeśli okaże się, że nie ma chętnych do zabawy, potencjalne nagrody (książki, plecaki MTS, inne fajne zabawki) rozejdą się jak bułeczki na spotkaniach PLSSUG Warszawa :-)

A zatem Wesołych Świąt Wielkanocnych i udanego polowania na zapytania ;-)

[EDIT] Podziękowania dla Marka Powichrowskiego za zwrócenie mi uwagi na nieprawidłowy format pliku do zadania 2. [/EDIT]

Opublikowane 8 kwietnia 2009 13:59 przez brejk

Komentarze:

# re: [PL] "Co to za query?" – przygrywka do konkursu

8 kwietnia 2009 15:43 by jj

Paweł, zajebista inicjatywa. Gratuluję pomysłu. Słowa, które same cisną się na usta to "dżi... że mu się chce..." :) Podziwiam.

# re: [PL] "Co to za query?" – przygrywka do konkursu

8 kwietnia 2009 20:52 by brejk

@jj: Dzięki :-) W sumie to nie jest wielkie wyzwanie. Mam trochę gadżetów do rozdania, a taki konkurs chodził mi po głowie już rok temu. Sama realizacja nie wymaga ode mnie wielkiego wysiłku, więc tak - chce mi się ;-)

# re: [PL] "Co to za query?" – przygrywka do konkursu

8 kwietnia 2009 22:14 by porowski

Bardzo fajny pomysł na konkurs! Brawo!

# re: [PL] "Co to za query?" – przygrywka do konkursu

9 kwietnia 2009 09:44 by brejk

Mamy zwycięzcę rozgrzewki! Marek, gratuluję szybkiego rozwiązania zadań :-)

# [PL] Rozgrzewka przed "Co to za query" – Hall of Fame

9 kwietnia 2009 09:53 by SQLGEEK

Mamy już pierwszego uczestnika rozgrzewki przed konkursem "Co to za query" !!! Najszybciej

# re: [PL] "Co to za query?" – przygrywka do konkursu

9 kwietnia 2009 18:49 by Damian

Paweł, extra sprawa, mogę też wziąć udział w konkursach?

# re: [PL] "Co to za query?" – przygrywka do konkursu

9 kwietnia 2009 20:16 by brejk

@Damian: No jasne! A napisałem, że kogoś dyskryminuję? MVPs mile widziani! ;-)

# re: [PL] "Co to za query?" – przygrywka do konkursu

10 kwietnia 2009 11:12 by Łukasz G.

Paweł ale super pomysł!! Ale będe miał wieczorem zabawę! Gdyby nie to że szkolenie prowadzę to już bym się bawił ;)

# re: [PL] "Co to za query?" – przygrywka do konkursu

10 kwietnia 2009 11:40 by brejk

@Łukasz: Właściwy konkurs dopiero w maju. To, co widać, jest rozgrzewką, ale dostarcza chyba całkiem niezłej zabawy.

# re: [PL] "Co to za query?" – przygrywka do konkursu

10 kwietnia 2009 12:25 by Łukasz G.

@PP: To dla mnie nie istotne kiedy konkurs. Jest zabawa :)

# re: [PL] "Co to za query?" – przygrywka do konkursu

10 kwietnia 2009 14:03 by stasiek.d

: ) ja tam bym poszedł dalej, zwłaszcza że MVP chce poklikać: ). A mianowicie, czytanie wyłącznie:

- z graficznych planów

- z planów xml’owych (showplan_xml)

- z planów tekstowych (showplan_text)

Pierwszy wariant wymagałby większej pracy – oprócz zrzutu graficznego planu, konieczne są zrzuty szczegółów każdego więzła drzewa zapytania.

# re: [PL] "Co to za query?" – przygrywka do konkursu

10 kwietnia 2009 15:26 by brejk

@stasiek.d: Toż przecież czytacie z planów XMLowych ;-) I z graficznych też :D

# re: [PL] "Co to za query?" – przygrywka do konkursu

11 kwietnia 2009 17:13 by theos

pomysl bardzo fajny - z checia sie pobawie :))

# [PL] Rozgrzewka przed "Co to za query" - odpowiedzi

13 kwietnia 2009 21:27 by SQLGEEK

Poniżej odpowiedzi do zadań z rozgrzewki przed konkursem "Co to za query" . Opublikowałem już

# [PL] 34. spotkanie PLSSUG Warszawa – piękno i odloty

20 kwietnia 2009 22:02 by SQLGEEK

  W imieniu swoim oraz prelegentów mam przyjemność zaprosić na 34. spotkanie warszawskiego oddziału

# [PL] Konkurs "Co to za query" – etap 1 z 3

11 maja 2009 08:31 by SQLGEEK

Igrzyska czas zacząć :-) Zgodnie z zapowiedziami ogłaszam konkurs "Co to za query" . Rozgrzewka

Komentarze anonimowe wyłączone

About brejk

MVP, MCT, SQL Server geek