Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Session will begin very soon :)
Please complete the evaluation form from your pocket after the session. Your feedback will help us to improve future conferences and speakers will appreciate your feedback! Enjoy the conference!
2
Tuning Large Queries Grzegorz Łyp Tuning Large Queries
Witam wszystkich na sesji poświęconej analizie dużych zapytań pod kątem poprawy ich wydajności. Jeżeli spodziewaliście się innego tematu lub innej osoby, to znaczy że pomyliście sale.
3
Grzegorz Łyp MS SQL Architect & Optimizer MS SQL, .NET & Java Developer Product and Project Manager 15 years in professional IT 10 years in MS SQL Member of Data Community Poland Blog: Mail: LinkedIn: Facebook: Currently at Asseco Business Solutions ( ) Grzegorz Łyp Krótko o sobie. Mam 35 lat i od 15 lat istnieję w świecie profesjonalnego IT. Osobiście ojciec dwóch córek i mąż jednej żony. Startowałem od C i C++. Potem Delphi, MS Access i tak trafiłem do świata SQL. Potem po wprowadzeniu CLR pojawił się .NET. Okazjonalnie biorę się za projekty w Javie. Obecnie dodatkowo jestem menedżerem projektu oraz produktu w Asseco Business Solutions. Znajdziecie mnie pod tymi adresami w sieci. Obecnie pracuję w Asseco Business Solutions, gdzie staram się studzić dzikie zapędy programistów SQL i .NET do spowolnienia kodu, który produkują.
4
Sponsors Sponsors Wielkie brawa dla naszych sponsorów. Bez nich organizacja takich spotkań nie byłaby możliwa.
5
Agenda What is large query ? Why tuning large queries is hard ?
Some techniques to tune large queries or find what should be tuned Agenda Będziemy mówić o dużych zapytaniach, ale co to są duże zapytania. Naszym kryterium trudności jest odnalezienie się w sytuacji, gdy dostajemy zapytanie i według typowych reguł nie wiemy jak sobie z tym zapytaniem poradzić. Typowe reguły można znaleźć w opisach analizy planów wykonania oraz wskazówek dotyczących poprawiania wydajności zapytań. W dalszej części spróbuję pokazać wam dlaczego optymalizacja takich zapytań jest trudna. Przykłady. Na koniec i to będzie większość tej prezentacji pokaże wam kilka technik radzenia są w trudnych sytuacjach i spróbujemy znaleźć trudne miejsca zapytania.
6
What is large query ? Is it large ? select p.* from dbo.Posts p
left join dbo.Users u1 on p.OwnerUserId = u1.Id and u1.CreationDate<GETDATE() left join dbo.Users u2 on p.OwnerUserId = u2.Id and u2.Age<35 left join dbo.Users u3 on p.OwnerUserId = u3.Id and u3.DisplayName like '%Mickey%' left join dbo.Users u4 on p.OwnerUserId = u4.Id and u4.LastAccessDate <GETDATE() left join dbo.Users u5 on p.OwnerUserId = u5.Id and u5.Location like '%PL%' left join dbo.Users u6 on p.OwnerUserId = u6.Id and u6.Reputation >10 left join dbo.Users u7 on p.OwnerUserId = u7.Id and u7.UpVotes >10 left join dbo.Users u8 on p.OwnerUserId = u8.Id and u8.Views >10 where p.OwnerUserId = Grzegorz Łyp Is it large ? Będziemy posługiwać się bazą StackOverflow. Jest prosta i dostatecznie duża. OwnerUserId = > Id Grzegorz Łyp Czy to zapytanie jest „duże” ? Zagłosujmy. Kto jest na tak ? Kto jest na nie ? Sprawdźmy w SSMS.
7
What is large query ? Simple execution plan
Jak się okazuje plan wykonania jest bardzo prosty. Serwer SQL zauważył, że mamy join po kolumnie w indeksie unikalnym, co oznacza brak rozmnażania rekordów. Jednocześnie nie bierzemy żadnych pól w tabel po LEFT JOIN. W takiej sytuacji SQL Server potrafi zredukować zapytanie do prostszej postaci. Serwer zastosował jedną z reguł transformacji. Reguł jest całkiem sporo i nowsze wersje SQL mają ich coraz więcej. Lista transformacji dostępna jest w zapytaniu: select * from sys.dm_exec_query_transformation_stats
8
What is large query ? Is it large ? Let’s see how it works.
select p.LastActivityDate from dbo.Posts p inner join dbo.Users s on s.Id = p.OwnerUserId Is it large ? Let’s see how it works. Teraz mamy zapytanie pobierające dane z Postów z joinem do Userów. Sprawdźmy w SSMS czy jest szybkie.
9
What is large query ? Simple execution plan
To jest na pewno dużo danych, ale czy jest to trudno analizować wydajnościowo ? Nie. Sprawa jest jasna, choć wiedza o regułach transformacji wciąż jest istotna.
10
Long Live Demo Long Live Demo
Demo bazuje na bazie StackOverFlow. Ponad 100GB danych. Serwer jest całkiem szybki. DEMO
11
„Object-replacer” variants
„Null-Object” approach „Top 1” approach …. „Null-Object” Bieżemy każdy obiekt z zależności. Budujemy z niego „nullowy” i sprawdzamy plan. „TOP 1” Bieżemy każdy obiekt z zależności pytamy go o jeden rekord „TOP 1” i sprawdzamy plan. Możemy stworzyć więcej wariantów lub stworzyć hybrydy dające odpowiedni efekt w wielu sytuacjach.
12
Long Live Demo Long Live Demo
Demo bazuje na bazie StackOverFlow. Ponad 100GB danych. Serwer jest całkiem szybki. DEMO
13
Conclusions „No more guessing” Adam Machanic „Deep dive, repeat” Me
14
Q&A
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.