SQL

SQL Server 2019 – Intelligent Query Processing – Scalar Function Inlining

SQLServer_ScalarFunctionInline_00

Premiera SQL Server 2019 za nami, a wraz z nią pojawił się cały szereg nowych funkcjonalności. Jedną z nich jest rozszerzenie koncepcji Adaptive Query Processing czyli zestawu technologii, które umożliwiają dostosowanie sposobu wykonania zapytania podczas jego wykonania. Obecnie cała rodzina tych technologii nazywana jest Intelligent Query Processing, a jej schemat poglądowy możecie zobaczyć na poniższej grafice: Część z tych funkcjonalności zdołałem już opisać w ramach krótkiej serii trzech artykułów poświęconych Adaptive Query Processing (jeśli ktoś nie jest z nimi zaznajomiony linki poniżej): Adaptive Joins Interleaved Execution Memory Grant Feedback (Batch Mode) Dziś chciałbym poszerzyć nieco całą koncepcję i opisać kolejną…
Read more

SQL Server – minimalne logowanie

SQLServer_MinimalneLogowanie_00

Na to czy nasze rozwiązanie jest dostatecznie wydajne ma wpływ bardzo dużo różnych czynników. W przypadku procesów ładujących ETL czy też ELT jednym z kluczowych aspektów na jakie trzeba zwrócić uwagę jest minimalne logowanie. Co to jest i jak należy to testować? Postaram się to wytłumaczyć w ramach niniejszego artykułu – serdecznie zapraszam. Jak wszyscy wiemy baza danych aby zachować konsystencję i spełnić wszelkie postulaty bycia transakcyjną wykorzystuje dziennik transakcyjny (ang. transaction log). To właśnie w tym miejscu znajdują się informacje o niemal wszystkich operacjach modyfikujących jakie zostały wykonane na bazie danych. Jest to niezwykle istotne ze względu na fakt,…
Read more

SQL Server – parę słów o TABLOCK

SQLServer_Tablock_00

Dziś nieco zmienimy tematykę i chwilowo zostawiamy Azure Data Studio, ale nie ma czym się martwić bo powiemy sobie o niezwykle interesującej wskazówce jaką jest TABLOCK. Użycie tego konkretnego hinta jest powszechne jednakże w tak zwanym międzyczasie narosło na jego temat kilka mitów. Ponadto wiedza na ten temat nie jest zbyt powszechna dlatego też postanowiłem napisać kilka słów, które mam nadzieję okażą się użyteczne. Tak więc zaczynajmy! Na wstępie przedstawmy sobie definicję czym tak naprawdę jest TABLOCK. Otóż jest to wskazówka możliwa do użycia w zapytaniu, która powoduje, że blokada zwana powszechnie lockiem z poziomu wiersza lub strony jest przenoszona…
Read more

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

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