SQL Server database

SQL Server Hash Match – jak to działa

HashJoin_00
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

Nadszedł czas opisać ostatni algorytm złączenia dostępny w SQL Server, którym po Nested Loops oraz Merge Join jest Hash Match. Pierwszy z nich sprawdza się doskonale przy małych zbiorach danych, drugi to świetny algorytm łączący posortowane zbiory danych, bohater niniejszego artykułu sprawdza się z kolei bardzo dobrze przy dużych, nieposortowanych zbiorach wejściowych. Jak to wszystko działa? Postaram się to wytłumaczyć w ramach niniejszego artykułu. Operacja Hash match wewnętrznie składa się z dwóch faz tj. build oraz probe. Podczas fazy build Hash match skanuje jedno z wejść i każdą wartość zamienia na hash i na tej podstawie buduje tabele z wygenerowanymi…
Read more

Partition switching w SQL Server

Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

W przypadku hurtowni danych podczas ładowań danych do tabeli faktów bardzo często zdarza się, że chcemy zastąpić dane za określony okres (np. miesiąc)  świeżymi danymi z systemów źródłowych. Może to być wykonane na wiele sposobów, dla przykładu możemy usunąć z tabeli ostatni miesiąc komendą DELETE i wstawić nowe dane. Wiąże się to z wieloma niedogodnościami, po pierwsze operacja usunięcia będzie w pełni logowana, po drugie samo wyszukanie danych do usunięcia może być problematyczne. Dodatkowo możemy mieć problemy związane z lockami i blokadami. Powszechnie znanym faktem jest to, że jednymi z najszybszych operacji w SQL Server są operacje na metadanych, które…
Read more

Dlaczego mój plan zapytania nie jest równoległy?

SQLServerParallelism_00
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

SQL Server od już bardzo dawna potrafi wykonywać zapytania wykorzystując wiele wątków. O całym mechanizmie równoległości (ang. parallelism) opowiedziano już naprawdę wiele podczas różnego rodzaju prezentacji i artykułów, jednakże mam wrażenie, że nadal nie do końca jest to temat znany. W ramach niniejszego artykułu postanowiłem zebrać kilka faktów na ten temat oraz wypunktować kilka przyczyn, które powodują,  że nasz plan jest wykonywany na pojedynczym wątku mimo, że mógłby być równoległy. Zapraszam do zapoznania się z niniejszym tekstem. Na samym początku powiedzmy sobie o dwóch arcyważnych ustawieniach sterujących omawianym mechanizmem, a mianowicie Max Degree Of Parallelism oraz Cost Treshold Of Parallelism….
Read more

Partycjonowanie tabel a wydajność zapytań w SQL Server

PartitionElemination_00
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

Partycjonowanie jest szeroko znaną techniką użyteczną w bardzo wielu aspektach pracy związanych z tabelami i indeksami w SQL Server. Zanim zostanę posądzony o herezje to chciałem zaznaczyć, że techniki tej nie należy traktować jako stricte funkcjonalności poprawiania wydajności, jednakże sam sposób jej działania może pozytywnie wpłynąć również na przetwarzanie naszych zapytań odczytujących oraz ładujących. Z partycjami związany jest szereg różnych mechanizmów takich jak partition switching czy chociażby partition elimination, które mogą być bardzo pomocne w codziennej pracy. W ramach niniejszego artykułu przedstawie kilka ogólnych właściwości tabel partycjonowanych oraz powiemy sobie co nieco o eliminacji partycji. Całość tematu będzie najlepiej zrozumieć…
Read more

Równoległe wstawianie danych do tabel tymczasowych

ParallelismAndtempTables_00
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

Z tabel tymczasowych korzysta niemal każdy związany w swojej pracy zawodowej z SQL Server. Są one pomocne w przypadku czasowego przechowywania rezultatów zapytań i często mogą być również techniką optymalizacyjną. Nie inaczej jest w przypadku ładowań większych tabel wchodzących w skład hurtowni danych gdzie tabelki z hashem pojawiają się nagminnie czy to w procedurach składowanych czy też w zapytaniach ad-hoc. Wstawiając większe wolumeny danych do tabel tego typu zależy nam aby samo wstawianie wykonywane było jak najszybciej. Do tej pory mieliśmy jasną sytuację jeśli chodzi o tabele tymczasowe i równoległe wstawianie danych, jednakże w ostatnim czasie pojawiło się kilka niejasnych…
Read more