SQL Server database

Adaptive Query Processing – Memory Grant Feedback

SQLServerMemoryGrantFeedback_00

Kontynuujemy naszą małą serię związaną z Adaptive Query Processing czyli elastycznym dostosowaniu zapytania w trakcie jego wykonania. Do tej pory udało mi się opisać dwa mechanizmy wchodzące w skład AQP i były to Interleaved Execution oraz Adaptive Join, dziś opowiemy sobie o kolejnym, który został wprowadzony w SQL Server 2017 i ulepszony w wersji SQL Server 2019 o dosyć ciekawie brzmiącej nazwie tj. Memory Grant Feedback, serdecznie zapraszam do lektury. Na wstępie powiedzmy sobie kilka słów o tym czym jest  Memory Grant i od czego zależy. Jak sama nazwa wskazuje jest to nic innego jak przydział pamięci nadawany przez SQL…
Read more

Adaptive Query Processing – Adaptive Join

SQLServerAdaptiveJoin_00

Jakiś czas temu pisałem już o tym, że SQL Server 2017 wprowadził (a raczej zapoczątkował) sporo zmian jeśli chodzi o wykonywanie zapytań z wydajnościowego punktu widzenia. Chodzi mianowicie o rodzinę mechanizmów nazwanych Adaptive Query Processing. Pod tą nazwą kryją się możliwości dostosowania planu zapytania w zależności od okoliczności podczas wykonywania zapytania. Technologia ta z produkcyjnego punktu widzenia obecnie składa się z trzech elementów tj. Interleaved Execution (o którym pisałem już tutaj), Memory Grant Feedback oraz Adaptive Join.Ciekawe w tym wszystkim jest to, że dla developerów jest to właściwie transparentne i działa bez żadnych zmian w kodzie. Ponadto wraz z SQL…
Read more

In-memory OLTP – Memory Optimized Table Variables

SQLServer_Inmemoryvariables_00

Użycie zmiennych tabelarycznych i tabel tymczasowych w SQL Server jest niezwykle popularne. Ludzie na co dzień pracujący z kodem czy to TSQL czy też innym językiem dedykowanym do wytwarzania oprogramowania przywykli do konceptu zmiennej. Obiekt tego typu oprócz przechowywania danych skalarnych pozwala również zachować rezultat w postaci tabeli. W SQL Server tabelaryczna forma zmiennych okryta jest złą sławą i chyba każdy z nas chociaż raz uczestniczył w sesji lub czytał artykuł, który porównywał zmienne tabelaryczne z tabelami tymczasowymi. Wad zmiennych tego typu z całą pewnością jest sporo jednakże nie oznacza to, że nie sprawdzą się one w żadnej sytuacji. Nie…
Read more

Adaptive Query Processing – Interleaved execution

Wraz z SQL Server 2017 wprowadzono szereg ulepszeń w przetwarzaniu zapytań. Jedną z najbardziej spektakularnych jest bez wątpienia tzw. Adaptive Query Processing czyli tłumacząc na nasz język możliwość dostosowywania przez optymalizator sposobu wykonania zapytań w trakcie przetwarzania. Adepci optymalizacji zapytań powinni w tej chwili się zastanowić i zadać pytanie czy to w ogóle możliwe? Przecież to całkowicie zmienia schemat działania optymalizatora! Odpowiedź jest jednoznaczna i brzmi: tak można – od SQL Server 2017. Już na samym wstępie chciałbym zaznaczyć, że nie oznacza to, iż teraz optymalizator będzie zmieniał plan wykonania po każdym operatorze, a jedynie dostosowywał odpowiednie elementy planu w…
Read more

Raport Schema Changes History i default trace w SQL Server

SQLServer_SChemaChangesHistory_00

Szeroko pojęte operacje DDL (Data Definition Language) w SQL Server czyli wszelkiego rodzaju CREATE, DROP, ALTER powinny być używane z rozwagą szczególnie jeśli chodzi o serwery produkcyjne. Stwierdzenie to jest oczywiste dla niemal każdego, a ja przytoczyłem go ze względu na tematykę niniejszego artykułu, którym jest wbudowany w SSMS raport Schema Changes Hsitory pozwalający nam w przystępny sposób dostrzec co, gdzie i kiedy zostało wykonane na naszym serwerze. Przyjmy się nie tylko samemu raportowi ale również mechanizmowi na którym on bazuje. Na samym wstępie powiedzmy sobie gdzie w ogóle wspomniany raport możemy znaleźć. Rzekłbym w standardowym miejscu tj. wystarczy kliknąć…
Read more