50 najpopularniejsze pytania i odpowiedzi na rozmowie kwalifikacyjnej T-SQL (2026)

Pytania i odpowiedzi na rozmowฤ™ kwalifikacyjnฤ… T-SQL

Przygotowujesz siฤ™ do rozmowy kwalifikacyjnej T-SQL? Czas pogล‚ฤ™biฤ‡ swojฤ… wiedzฤ™ na temat tego, jak bazy danych naprawdฤ™ dziaล‚ajฤ… pod powierzchniฤ…. Pytania do rozmowy kwalifikacyjnej T-SQLRekruterzy oceniajฤ… nie tylko znajomoล›ฤ‡ skล‚adni, ale takลผe umiejฤ™tnoล›ฤ‡ manipulowania danymi, ich optymalizacji i logicznego strukturyzowania.

Moลผliwoล›ci w tej dziedzinie stale rosnฤ…, poniewaลผ firmy polegajฤ… na wnioskach opartych na danych. Kandydaci z silnฤ… wiedzฤ… technicznฤ…, umiejฤ™tnoล›ciami analitycznymi i umiejฤ™tnoล›ciฤ… rozwiฤ…zywania rzeczywistych problemรณw wyrรณลผniajฤ… siฤ™ โ€“ zarรณwno nowicjusze, jak i specjaliล›ci z 5โ€“10-letnim doล›wiadczeniem. Zrozumienie pytaล„ i odpowiedzi na poziomie podstawowym i zaawansowanym pomaga liderom zespoล‚รณw, menedลผerom i starszym pracownikom technicznym zidentyfikowaฤ‡ silne umiejฤ™tnoล›ci SQL i doล›wiadczenie na poziomie podstawowym.

Nasz przewodnik powstaล‚ w oparciu o spostrzeลผenia ponad 65 menedลผerรณw ds. rekrutacji, ponad 40 starszych programistรณw i specjalistรณw ds. danych z rรณลผnych branลผ, zapewniajฤ…c kompleksowy zakres zagadnieล„ โ€“ od podstawowej logiki SQL po zaawansowane techniki optymalizacji, ktรณrym ufajฤ… liderzy techniczni na caล‚ym ล›wiecie.
Czytaj wiฤ™cej ...

๐Ÿ‘‰ Bezpล‚atne pobieranie pliku PDF: Pytania i odpowiedzi na rozmowฤ™ kwalifikacyjnฤ… z jฤ™zyka T-SQL

Najwaลผniejsze pytania i odpowiedzi na rozmowie kwalifikacyjnej dotyczฤ…ce jฤ™zyka T-SQL

1) Czym jest T-SQL i czym rรณลผni siฤ™ od standardowego SQL?

Transact-SQL (T-SQL) to Microsoftzastrzeลผone rozszerzenie jฤ™zyka SQL, uลผywane gล‚รณwnie z Microsoft SQL ServerRozszerza standardowy SQL poprzez wprowadzenie funkcji programowania proceduralnego, takich jak zmienne, warunki, pฤ™tle, obsล‚uga bล‚ฤ™dรณw i funkcje wbudowane. Podczas gdy standardowy SQL koncentruje siฤ™ na manipulacji danymi (SELECT, INSERT, UPDATE, DELETE), T-SQL obsล‚uguje instrukcje sterowania przepล‚ywem (IFโ€ฆELSE, WHILE), obsล‚ugฤ™ transakcji oraz funkcje systemowe, ktรณre umoลผliwiajฤ… programistom pisanie zล‚oลผonych skryptรณw.

WYGLฤ„D SQL T-SQL
Wล‚asnoล›ฤ‡ Norma ANSI/ISO Microsoft
Logika proceduralna Ograniczony Obsล‚ugiwane (zmienne, pฤ™tle)
Obsล‚uga bล‚ฤ™dรณw minimalny TRYโ€ฆCATCH obsล‚ugiwany
Pierwsze uลผycie Ogรณlne bazy danych SQL Server

Przykล‚ad:

DECLARE @count INT = 5;
WHILE @count > 0
BEGIN
    PRINT @count;
    SET @count -= 1;
END;

2) Wyjaล›nij rรณลผne typy poล‚ฤ…czeล„ w jฤ™zyku T-SQL na przykล‚adach.

Zล‚ฤ…czenia w jฤ™zyku T-SQL ล‚ฤ…czฤ… wiersze z dwรณch lub wiฤ™cej tabel na podstawie powiฤ…zanych kolumn. Zrozumienie ich typรณw jest kluczowe w przypadku zapytaล„ dotyczฤ…cych danych relacyjnych.

Typ poล‚ฤ…czenia OPIS Przykล‚adowa skล‚adnia
INNER JOIN Zwraca tylko pasujฤ…ce wiersze SELECT * FROM A INNER JOIN B ON A.id = B.id;
LEFT JOIN Wszystko od lewej + pasujฤ…ce od prawej SELECT * FROM A LEFT JOIN B ON A.id = B.id;
WลAลšCIWE DOลฤ„CZENIE Wszystko od prawej + pasujฤ…ce od lewej SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
PEลNE DOลฤ„CZENIE ลฤ…czy LEWฤ„ + PRAWฤ„ SELECT * FROM A FULL JOIN B ON A.id = B.id;
KRZYลป DOลฤ„CZ Produkt kartezjaล„ski SELECT * FROM A CROSS JOIN B;

Praktyczny przykล‚ad: ลฤ…czฤ…cy Orders oraz Customers aby dowiedzieฤ‡ siฤ™, ktรณrzy klienci zล‚oลผyli zamรณwienia za pomocฤ… INNER JOIN.


3) Czym sฤ… wyraลผenia CTE (Common Table Expressions) i jakie sฤ… ich zalety?

Wspรณlny zestaw tabelaryczny (CTE) zapewnia tymczasowy nazwany zestaw wynikรณw, do ktรณrego moลผna odwoล‚ywaฤ‡ siฤ™ w SELECT, INSERT, UPDATElub DELETE oล›wiadczenie. Poprawia czytelnoล›ฤ‡ i upraszcza zapytania rekurencyjne.

Zalety:

  • Poprawia przejrzystoล›ฤ‡ i konserwacjฤ™ zapytaล„.
  • Wล‚ฤ…cza rekurencjฤ™ (dla danych hierarchicznych, takich jak schematy organizacyjne).
  • Pomaga uniknฤ…ฤ‡ powtarzajฤ…cych siฤ™ podzapytaล„.
  • Zwiฤ™ksza moduล‚owoล›ฤ‡ w duลผych skryptach.

Przykล‚ad:

WITH EmployeeCTE AS (
    SELECT EmpID, EmpName, ManagerID
    FROM Employees
)
SELECT * FROM EmployeeCTE WHERE ManagerID IS NULL;

4) Czym rรณลผniฤ… siฤ™ tabele tymczasowe i zmienne tabelowe w jฤ™zyku T-SQL?

Oba sล‚uลผฤ… do przechowywania wynikรณw poล›rednich, ale ich zachowanie i zakres rรณลผniฤ… siฤ™ znaczฤ…co.

Cecha Tabela tymczasowa (#Temp) Zmienna tabeli (@TableVar)
Przechowywane w TempDB Pamiฤ™ฤ‡ (z ograniczonym wykorzystaniem TempDB)
Zakres transakcyjny ลšledzi transakcje Niezaleลผny od transakcji
Indeksy Utrzymany Ograniczony
Wydajnoล›ฤ‡ Lepiej dla duลผych zestawรณw danych Lepiej dla maล‚ych zestawรณw danych

Przykล‚ad:

DECLARE @TableVar TABLE (ID INT, Name NVARCHAR(50));
INSERT INTO @TableVar VALUES (1, 'Alice');

Uลผywaj tabel tymczasowych podczas pracy z duลผymi zbiorami danych lub gdy wymagane sฤ… indeksy.


5) Wyjaล›nij koncepcjฤ™ transakcji w jฤ™zyku T-SQL i ich cykl ลผycia.

Transakcja w jฤ™zyku T-SQL zapewnia, ลผe โ€‹โ€‹sekwencja operacji jest wykonywana jako pojedyncza jednostka logiczna. Cykl ลผycia obejmuje: ROZPOCZNIJ TRANSAKCJฤ˜, POPEลNIฤ†, COFNIฤ˜CIE.

STAGE OPIS
ROZPOCZNIJ TRANSAKCJฤ˜ Rozpoczyna transakcjฤ™
ZATWIERDลน TRANSAKCJฤ˜ Zapisuje wszystkie zmiany na staล‚e
WYCOFANIE TRANSAKCJI Cofa wszystkie operacje od ostatniego BEGIN

Przykล‚ad:

BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 100 WHERE AccID = 1;
UPDATE Accounts SET Balance = Balance + 100 WHERE AccID = 2;
COMMIT TRANSACTION;

Jeลผeli w trakcie wystฤ…pi bล‚ฤ…d, ROLLBACK zachowuje integralnoล›ฤ‡ danych.


6) Jaka jest rรณลผnica pomiฤ™dzy poleceniami DELETE, TRUNCATE i DROP?

Command Funkcjonowaฤ‡ Wycofywanie Wpล‚ywa na strukturฤ™ Prฤ™dkoล›ฤ‡
DELETE Usuwa okreล›lone wiersze Tak Nie Wolniej
ลšCIฤ˜TY Usuwa wszystkie wiersze Nie (zwykle) Nie pompatycznoล›ฤ‡
DROP Usuwa caล‚ฤ… tabelฤ™ Nie Tak Najszybszy

Przykล‚ad:

DELETE FROM Employees WHERE Department = 'HR';
TRUNCATE TABLE TempData;
DROP TABLE OldLogs;

Zastosowanie DELETE do selektywnego usuwania, TRUNCATE do czyszczenia i DROP aby caล‚kowicie usunฤ…ฤ‡ tabelฤ™.


7) Jak dziaล‚a obsล‚uga bล‚ฤ™dรณw w jฤ™zyku T-SQL?

Jฤ™zyk T-SQL zapewnia ustrukturyzowanฤ… obsล‚ugฤ™ bล‚ฤ™dรณw poprzez TRY...CATCH blok, umoลผliwiajฤ…cy programistom sprawne zarzฤ…dzanie bล‚ฤ™dami w czasie wykonywania.

Przykล‚ad:

BEGIN TRY
    INSERT INTO Employees VALUES (1, 'John');
END TRY
BEGIN CATCH
    PRINT 'Error: ' + ERROR_MESSAGE();
END CATCH;

To podejล›cie izoluje wadliwฤ… operacjฤ™ i zapobiega naruszeniu integralnoล›ci danych przez transakcjฤ™. Programiล›ci mogฤ… rรณwnieลผ uzyskaฤ‡ dostฤ™p do funkcji systemu, takich jak ERROR_NUMBER() or ERROR_SEVERITY() do celรณw diagnostycznych.


8) Jakie sฤ… rรณลผne sposoby optymalizacji wydajnoล›ci zapytaล„ T-SQL?

Optymalizacja obejmuje precyzyjne dostrajanie projektu SQL, indeksowania i strategii wykonywania.

Kluczowe techniki:

  1. Zastosowanie wล‚aล›ciwe indeksowanie w czฤ™sto wyszukiwanych kolumnach.
  2. Uniknฤ…ฤ‡ SELECT * โ€” wyraลบnie okreล›l kolumny.
  3. Zastosowanie operacje oparte na zbiorach zamiast kursorรณw.
  4. Analizuj plany wykonania przy uลผyciu SQL Server Management Studio.
  5. Zastosowanie ลฤ…czy siฤ™ wydajnie przy odpowiednich warunkach ON.
  6. Zredukowaฤ‡ zagnieลผdลผone podzapytania; preferuj CTE lub tabele tymczasowe.

Dostrajanie wydajnoล›ci w jฤ™zyku T-SQL obejmuje rรณwnieลผ monitorowanie statystyk wykonywania zapytaล„ za pomocฤ… SET STATISTICS IO ON.


9) Czym sฤ… funkcje okna i kiedy naleลผy ich uลผywaฤ‡?

Funkcje okienkowe wykonujฤ… obliczenia na zestawie wierszy powiฤ…zanych z bieลผฤ…cym wierszem, bez ล‚ฤ…czenia ich w jeden wynik. Sฤ… przydatne do tworzenia rankingรณw, sum bieลผฤ…cych i ล›rednich kroczฤ…cych.

Przykล‚ad:

SELECT
    EmployeeID,
    Salary,
    RANK() OVER (ORDER BY Salary DESC) AS RankBySalary
FROM Employees;

Typowe funkcje obejmujฤ…: RANK(), ROW_NUMBER(), DENSE_RANK(), SUM() OVER().

Sฤ… one szczegรณlnie waลผne w przypadku obciฤ…ลผeล„ analitycznych, w ktรณrych potrzebne sฤ… zarรณwno dane zagregowane, jak i dane na poziomie wierszy.


10) Wyjaล›nij rรณลผnicฤ™ miฤ™dzy indeksami klastrowymi i nieklastrowymi.

Cecha Clusterwyd. Indeks Nie-Clusterwyd. Indeks
Przechowywanie danych Fizycznie przestawia stรณล‚ Oddzielna struktura
Liczba na tabelฤ™ jeden Kilka
Wydajnoล›ฤ‡ Szybciej w przypadku zapytaล„ o zakres Szybciej w przypadku okreล›lonych wyszukiwaล„
Przykล‚ad uลผycia Gล‚รณwny klucz Wyszukiwania wtรณrne

Przykล‚ad:

CREATE CLUSTERED INDEX IX_EmployeeID ON Employees(EmployeeID);
CREATE NONCLUSTERED INDEX IX_Dept ON Employees(Department);

Wybรณr wล‚aล›ciwego typu indeksu ma bezpoล›redni wpล‚yw na szybkoล›ฤ‡ wykonywania zapytaล„ i efektywnoล›ฤ‡ przechowywania.


11) Czym sฤ… procedury skล‚adowane w jฤ™zyku T-SQL i dlaczego siฤ™ ich uลผywa?

Procedura skล‚adowana to wstฤ™pnie skompilowany zbiรณr jednego lub wiฤ™kszej liczby poleceล„ SQL przechowywanych na serwerze. Zwiฤ™kszajฤ… one wydajnoล›ฤ‡, bezpieczeล„stwo i moลผliwoล›ฤ‡ ponownego uลผycia, umoลผliwiajฤ…c hermetyzacjฤ™ logiki i jej wielokrotne wykonywanie bez koniecznoล›ci ponownej kompilacji. Procedury skล‚adowane zmniejszajฤ… ruch sieciowy i obsล‚ugujฤ… parametry dynamicznego wykonywania.

Przykล‚ad:

CREATE PROCEDURE GetEmployeeDetails @Dept NVARCHAR(50)
AS
BEGIN
    SELECT EmpName, Position FROM Employees WHERE Department = @Dept;
END;

Korzyล›ci:

  • Lepsza wydajnoล›ฤ‡ dziฤ™ki wstฤ™pnej kompilacji.
  • Poprawa bezpieczeล„stwa poprzez kontrolowane wykonywanie zadaล„.
  • ลatwiejsza konserwacja kodu i modularnoล›ฤ‡.

12) Wyjaล›nij rรณลผnicฤ™ miฤ™dzy procedurฤ… skล‚adowanฤ… a funkcjฤ… w jฤ™zyku T-SQL.

WYGLฤ„D Procedura skล‚adowana Funkcjonowaฤ‡
Typ zwrotu Moลผe zwracaฤ‡ wiele wartoล›ci Musi zwrรณciฤ‡ pojedynczฤ… wartoล›ฤ‡ lub tabelฤ™
Uลผyj w SELECT Niedozwolone Dozwolony
Obsล‚uga bล‚ฤ™dรณw TRYโ€ฆCATCH obsล‚ugiwany Ograniczony
Egzekucja Wykonano za poล›rednictwem EXEC Uลผywane w linii z SQL
Kontrola transakcji Utrzymany Nie jest obsล‚ugiwany

Przykล‚ad:

  • Procedura: EXEC GetEmployeeDetails 'HR';
  • Funkcja: SELECT dbo.GetSalary(101);

Funkcje idealnie nadajฤ… siฤ™ do obliczeล„, procedury lepiej sprawdzajฤ… siฤ™ w logice biznesowej i manipulacji danymi.


13) Czym jest wyzwalacz w jฤ™zyku T-SQL i jakie sฤ… jego typy?

Wyzwalacz to specjalna procedura skล‚adowana, ktรณra uruchamia siฤ™ automatycznie w odpowiedzi na okreล›lone zdarzenia (INSERT, UPDATE, DELETE) w tabeli lub widoku. Wyzwalacze sล‚uลผฤ… do egzekwowania reguล‚ biznesowych, audytu zmian lub utrzymywania integralnoล›ci referencyjnej.

Typ OPIS
PO WYZWALU Poลผary po zakoล„czeniu wydarzenia
ZAMIAST wyzwalacza Wykonuje siฤ™ w miejsce zdarzenia wyzwalajฤ…cego

Przykล‚ad:

CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
    PRINT 'New employee record added!';
END;

Unikaj nadmiernego uลผywania wyzwalaczy โ€” mogฤ… one wpล‚ywaฤ‡ na wydajnoล›ฤ‡ i komplikowaฤ‡ debugowanie.


14) Jak obsล‚ugiwaฤ‡ wartoล›ci NULL w jฤ™zyku T-SQL?

Wartoล›ฤ‡ NULL oznacza brakujฤ…ce lub nieznane dane. Jฤ™zyk T-SQL oferuje kilka funkcji, ktรณre skutecznie sobie z tym radzฤ…:

  • ISNULL(expression, replacement) โ†’ zastฤ™puje NULL wartoล›ciฤ… domyล›lnฤ….
  • COALESCE(expression1, expression2, ...) โ†’ zwraca pierwszฤ… wartoล›ฤ‡ rรณลผnฤ… od NULL.
  • NULLIF(expression1, expression2) โ†’ zwraca NULL, jeลผeli wyraลผenia sฤ… rรณwne.

Przykล‚ad:

SELECT ISNULL(Manager, 'No Manager') AS ManagerName FROM Employees;

Najlepsza praktyka: Zawsze uwzglฤ™dniaj wartoล›ci NULL w poล‚ฤ…czeniach i warunkach, aby uniknฤ…ฤ‡ nieoczekiwanych wynikรณw.


15) Czym sฤ… kursory w jฤ™zyku T-SQL i kiedy naleลผy ich unikaฤ‡?

Kursor umoลผliwia przetwarzanie wynikรณw zapytania wiersz po wierszu โ€” przydatne w przypadku zล‚oลผonej logiki, w ktรณrej operacje oparte na zbiorach sฤ… niewystarczajฤ…ce. Kursory sฤ… jednak powolny oraz wymagajฤ…cy duลผej iloล›ci zasobรณw w porรณwnaniu do alternatyw opartych na zestawach.

Przykล‚ad:

DECLARE emp_cursor CURSOR FOR SELECT EmpName FROM Employees;
OPEN emp_cursor;
FETCH NEXT FROM emp_cursor;
-- process
CLOSE emp_cursor;
DEALLOCATE emp_cursor;

Niedogodnoล›ci:

  • Zwiฤ™kszone wykorzystanie pamiฤ™ci.
  • Sล‚aba skalowalnoล›ฤ‡.
  • Zmniejszona wydajnoล›ฤ‡.

Alternatywa: Jeล›li to moลผliwe, naleลผy uลผywaฤ‡ ล‚ฤ…czeล„ tabel, podzapytaล„ i funkcji okna.


16) Wyjaล›nij polecenie MERGE i przypadki jego uลผycia.

MERGE polecenie wykonuje INSERT, Aktualizacja, DELETE operacje w jednym poleceniu โ€” idealne do synchronizacji dwรณch tabel.

Przykล‚ad skล‚adni:

MERGE INTO Target AS T
USING Source AS S
ON T.ID = S.ID
WHEN MATCHED THEN UPDATE SET T.Name = S.Name
WHEN NOT MATCHED BY TARGET THEN INSERT (ID, Name) VALUES (S.ID, S.Name)
WHEN NOT MATCHED BY SOURCE THEN DELETE;

Przypadkรณw uลผycia:

  • Magazynowanie danych (synchronizacja tabel przejล›ciowych i docelowych).
  • Przyrostowe ล‚adowanie danych.
  • Prowadzenie tabel audytu lub wymiarรณw.

17) Jakie sฤ… rรณลผne typy funkcji zdefiniowanych przez uลผytkownika (UDF) w jฤ™zyku T-SQL?

Typ OPIS Przykล‚ad
Skalarny Zwraca pojedynczฤ… wartoล›ฤ‡ CREATE FUNCTION GetTax(@Salary DECIMAL) RETURNS DECIMAL
Wbudowana tabela wartoล›ci Zwraca tabelฤ™ za pomocฤ… pojedynczego SELECT RETURN SELECT * FROM Employees WHERE Dept = 'HR'
Wieloinstrukcyjny ukล‚ad wartoล›ci tabelarycznych Zwraca tabelฤ™ po wielu poleceniach Przydatne w przypadku zล‚oลผonej logiki

Funkcje te uล‚atwiajฤ… ponowne wykorzystanie kodu i wzbogacajฤ… moduล‚owฤ… konstrukcjฤ™ zapytaล„.

Powinny byฤ‡ one deterministyczne (zwracaฤ‡ ten sam wynik dla tych samych danych wejล›ciowych), o ile jest to moลผliwe w celu optymalizacji wydajnoล›ci.


18) Czym jest normalizacja i jakie sฤ… jej zalety i wady?

Normalizacja to proces porzฤ…dkowania danych w bazie danych w celu zminimalizowania redundancji i poprawy integralnoล›ci. Polega ona na podziale tabel na mniejsze, powiฤ…zane ze sobฤ… jednostki.

Normalna forma Zasada Przykล‚ad
1NF Wyeliminuj powtarzajฤ…ce siฤ™ grupy Podziel dane rozdzielone przecinkami
2NF Usuล„ czฤ™ล›ciowe zaleลผnoล›ci Zapewnij peล‚nฤ… zaleลผnoล›ฤ‡ od klucza podstawowego
3NF Usuล„ zaleลผnoล›ci przechodnie Przenieล› atrybuty pochodne

Zalety:

  • Zmniejsza redundancjฤ™.
  • Zapewnia spรณjnoล›ฤ‡ danych.
  • Uล‚atwia konserwacjฤ™.

Niedogodnoล›ci:

  • Poล‚ฤ…czenia zล‚oลผone.
  • Potencjalne kompromisy wydajnoล›ciowe w przypadku zapytaล„ analitycznych.

19) Jakie sฤ… rรณลผne typy ograniczeล„ w T-SQL?

Ograniczenia wymuszajฤ… reguล‚y dotyczฤ…ce integralnoล›ci danych w tabeli.

Przymus Cel Przykล‚ad
KLUCZ PODSTAWOWY Unikalnie identyfikuje kaลผdy wiersz PRIMARY KEY (EmpID)
KLUCZ OBCY ลฤ…czy dwie tabele FOREIGN KEY (DeptID)
NIECODZIENNCH Zapewnia unikalne wartoล›ci kolumn UNIQUE (Email)
SPRAWDZ Sprawdza zakres danych CHECK (Age >= 18)
DEFAULT Zapewnia wartoล›ci domyล›lne DEFAULT GETDATE()

Ograniczenia zapewniajฤ… dokล‚adnoล›ฤ‡ i niezawodnoล›ฤ‡, redukujฤ…c potrzebฤ™ rozlegล‚ej walidacji na poziomie aplikacji.


20) Jak zarzฤ…dzaฤ‡ uprawnieniami i bezpieczeล„stwem w T-SQL?

T-SQL zarzฤ…dza bezpieczeล„stwem bazy danych za poล›rednictwem logowania, uลผytkownicy, role i uprawnienia.

Uprawnienia mogฤ… byฤ‡ przyznawane lub cofane na poziomie obiektu lub schematu.

Przykล‚ad:

CREATE LOGIN John WITH PASSWORD = 'Strong@123';
CREATE USER John FOR LOGIN John;
GRANT SELECT, INSERT ON Employees TO John;

Najlepsze Praktyki:

  • Zastosowanie role zamiast bezpoล›rednich uprawnieล„ uลผytkownika.
  • Unikaj uลผywania sa lub konta systemowe dla aplikacji.
  • Regularnie sprawdzaj uprawnienia za pomocฤ… sys.database_permissions.

Prawidล‚owe zarzฤ…dzanie uprawnieniami zapewnia przestrzeganie zasady najmniejszych uprawnieล„ i zgodnoล›ฤ‡ z politykฤ… bezpieczeล„stwa.


21) Jakie sฤ… rรณลผne poziomy izolacji transakcji w T-SQL?

Poziomy izolacji transakcji okreล›lajฤ… sposรณb izolowania jednej transakcji od innych โ€” rรณwnowaลผenie konsystencja w wspรณล‚bieลผnoล›ฤ‡. Serwer SQL obsล‚uguje nastฤ™pujฤ…ce funkcje:

Poziom izolacji OPIS Brudny odczyt Niepowtarzalny odczyt Fantomowe czytanie
CZYTAJ NIEZGODNE Odczytuje niezatwierdzone dane Tak Tak Tak
PRZECZYTAJ ZATWIERDZONE Domyล›lne; blokady zapobiegajฤ… niepoprawnym odczytom Nie Tak Tak
POWTARZALNA CZYTANIE Zapobiega zmianie danych do momentu zatwierdzenia Nie Nie Tak
SERIALIZOWANY Peล‚na izolacja; najwyลผszy poziom blokowania Nie Nie Nie
MIGAWKA Uลผywa wersjonowania, a nie blokowania Nie Nie Nie

Przykล‚ad:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
-- your code
COMMIT;

Zastosowanie MIGAWKA dla systemรณw o wysokiej wspรณล‚bieลผnoล›ci w celu zminimalizowania blokowania bez poล›wiฤ™cania spรณjnoล›ci.


22) Czym jest impas w programie SQL Server i jak moลผna mu zapobiec?

A impas Wystฤ™puje, gdy dwie transakcje posiadajฤ… blokady, ktรณrych potrzebuje druga, co skutkuje impasem. SQL Server automatycznie wykrywa i koล„czy jednฤ… transakcjฤ™ jako ofiarฤ™ impasu.

Przykล‚adowy scenariusz:

  • Transakcja A blokuje Tabelฤ™ 1, a nastฤ™pnie czeka na Tabelฤ™ 2.
  • Transakcja B blokuje Tabelฤ™ 2, a nastฤ™pnie czeka na Tabelฤ™ 1.

Techniki zapobiegawcze:

  1. Uzyskaj dostฤ™p do zasobรณw w tej samej kolejnoล›ci.
  2. Utrzymuj krรณtkie transakcje.
  3. Stosuj odpowiednie poziomy izolacji.
  4. Unikaj interakcji uลผytkownika podczas transakcji.

Uลผyj narzฤ™dzia SQL Profiler lub Extended Events, aby traci blokad w czasie rzeczywistym.


23) Wyjaล›nij rรณลผnicฤ™ miฤ™dzy pesymistycznฤ… i optymistycznฤ… kontrolฤ… wspรณล‚bieลผnoล›ci.

Typ OPIS Zamykajฤ…cy mechanizm Przypadek uลผycia
Pesymistyczny Blokuje dane podczas transakcji Mocne blokowanie ลšrodowiska o wysokim poziomie konfliktรณw
Optymistyczny Uลผywa wersjonowania wierszy, sprawdza przed zatwierdzeniem Minimalne blokowanie Obciฤ…ลผenia wymagajฤ…ce duลผej iloล›ci odczytu i niskiej liczby konfliktรณw

Przykล‚ad:

  • Pesymistyczny: Domyล›lny READ COMMITTED zamykajฤ…cy.
  • Optymistyczny: SNAPSHOT izolacja z wersjonowaniem wierszy.

Optymistyczna wspรณล‚bieลผnoล›ฤ‡ zwiฤ™ksza wydajnoล›ฤ‡ systemรณw wykonujฤ…cych duลผe operacje odczytu i rzadkie aktualizacje.


24) Jak moลผna analizowaฤ‡ i optymalizowaฤ‡ wolno dziaล‚ajฤ…ce zapytania T-SQL?

  1. Sprawdลบ plan wykonania: Identyfikuj skany, brakujฤ…ce indeksy i kosztowne operacje.
  2. Uลผyj SET STATISTICS IO/TIME: Analizuj uลผycie wejล›cia/wyjล›cia i procesora.
  3. Unikaj kursorรณw i pฤ™tli: Zastฤ…p operacjami opartymi na zbiorach.
  4. Optymalizacja indeksu: Dodawanie i reorganizacja pofragmentowanych indeksรณw.
  5. Wฤ…chanie parametrรณw: Zastosowanie OPTION (RECOMPILE) aby wygenerowaฤ‡ nowe plany.

Przykล‚ad:

SET STATISTICS TIME ON;
SELECT * FROM Orders WHERE CustomerID = 123;

Regularne monitorowanie powolnych zapytaล„ za pomocฤ… Dynamiczne widoki zarzฤ…dzania (DMV) lubiฤ‡ sys.dm_exec_query_stats jest najlepszฤ… praktykฤ….


25) Czym jest Dynamic SQL i jakie sฤ… jego zalety i zagroลผenia?

Dynamiczny SQL umoลผliwia dynamiczne konstruowanie instrukcji SQL w czasie wykonywania przy uลผyciu zmiennych.

Przykล‚ad:

DECLARE @sql NVARCHAR(MAX);
SET @sql = 'SELECT * FROM Employees WHERE Dept = ''' + @Dept + '''';
EXEC(@sql);

Zalety:

  • Elastycznoล›ฤ‡ w zakresie zmiennych nazw tabel i filtrรณw.
  • Moลผliwoล›ฤ‡ ponownego wykorzystania w wielu schematach.

Niedogodnoล›ci:

  • Podatny na SQL Injection jeล›li nie jest sparametryzowane.
  • Trudniejsze do debugowania i konserwacji.

Zawsze uลผywaj sp_executesql z parametrami bezpieczeล„stwa.


26) Czym sฤ… obiekty tymczasowe w jฤ™zyku T-SQL i czym siฤ™ miฤ™dzy nimi rรณลผniฤ…?

Obiekty tymczasowe sฤ… przechowywane w TempDB i pomรณc w zarzฤ…dzaniu danymi poล›rednimi.

Rodzaj obiektu Zakres Przykล‚ad
Lokalna tabela temperatur Specyficzne dla sesji CREATE TABLE #TempTable
Globalna tabela temperatur Widoczne dla wszystkich sesji CREATE TABLE ##TempGlobal
Zmienna tabeli Specyficzne dla partii DECLARE @Temp TABLE (...)

Najlepsze Praktyki:

  • W przypadku mniejszych zbiorรณw danych naleลผy preferowaฤ‡ zmienne tabelaryczne.
  • W przypadku wiฤ™kszych zbiorรณw danych wymagajฤ…cych indeksowania naleลผy uลผywaฤ‡ lokalnych tabel tymczasowych.
  • Aby szybciej zwolniฤ‡ zasoby, naleลผy wyraลบnie usunฤ…ฤ‡ tabele tymczasowe.

27) Jak uลผywaฤ‡ funkcji partycjonowania okien w jฤ™zyku T-SQL?

Partycjonowanie pozwala na stosowanie funkcji okna do okreล›lonych podzbiorรณw danych.

Przykล‚ad:

SELECT
    Department,
    EmpName,
    Salary,
    RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS RankInDept
FROM Employees;

Korzyล›ci:

  • Efektywnie oblicza rankingi, sumy i ล›rednie dla kaลผdej grupy.
  • Eliminuje potrzebฤ™ wykonywania samosprzฤ™ลผeล„ i podzapytaล„.

Przypadkรณw uลผycia: Przedziaล‚y wynagrodzeล„, rankingi sprzedaลผy i analiza trendรณw.


28) Jaka jest rรณลผnica miฤ™dzy UNION i UNION ALL w jฤ™zyku T-SQL?

Klauzula Duplikaty Wydajnoล›ฤ‡ Przypadek uลผycia
UNION Usuwa duplikaty Wolniejszy (uลผywa sortowania/odrรณลผniania) Czyste ล‚ฤ…czenie zestawรณw wynikรณw
UNIA WSZYSTKIE Zachowuje duplikaty Szybciej Agregacja lub migracja danych

Przykล‚ad:

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers;

Woleฤ‡ UNION ALL kiedy duplikaty sฤ… akceptowalne, a wydajnoล›ฤ‡ ma znaczenie.


29) Jak pracowaฤ‡ z danymi JSON w jฤ™zyku T-SQL?

SQL Server obsล‚uguje natywne funkcje JSON sล‚uลผฤ…ce do analizowania i generowania danych JSON.

Przykล‚ad:

DECLARE @json NVARCHAR(MAX) = '{"Name":"John","Age":30}';
SELECT JSON_VALUE(@json, '$.Name') AS Name;

Kluczowe funkcje:

  • JSON_VALUE() โ†’ Byล‚ytracwartoล›ci skalarne ts.
  • JSON_QUERY() โ†’ Byล‚ytracobiekty/tablice ts.
  • OPENJSON() โ†’ Analizuje JSON na wiersze.
  • FOR JSON โ†’ Konwertuje wyniki zapytania do formatu JSON.

Przydatne w przypadku interfejsรณw API, systemรณw hybrydowych i integracji NoSQL.


30) Jak zarzฤ…dzaฤ‡ bazฤ… danych TempDB w programie SQL Server i jฤ… optymalizowaฤ‡?

TempDB to systemowa baza danych, ktรณra ma kluczowe znaczenie dla tymczasowego przechowywania i kontroli wersji. Niewล‚aล›ciwe zarzฤ…dzanie moลผe powodowaฤ‡ powaลผne problemy z wydajnoล›ciฤ….

Techniki optymalizacji:

  1. Umieล›ฤ‡ TempDB na szybkim dysku SSD.
  2. Wstฤ™pnie okreล›l rozmiar plikรณw danych i dziennika.
  3. Uลผyj wielu plikรณw danych (1 na kaลผdy rdzeล„ procesora, maksymalnie 8).
  4. Monitoruj z sys.dm_db_file_space_usage.
  5. Regularnie usuwaj tymczasowe obiekty.

Przykล‚adowe zapytanie:

SELECT * FROM sys.dm_db_file_space_usage;

Aktywne zarzฤ…dzanie bazฤ… danych TempDB pozwala uniknฤ…ฤ‡ konfliktรณw na stronach alokacji i zwiฤ™ksza ogรณlnฤ… przepustowoล›ฤ‡ bazy danych.


31) Czym sฤ… wskazรณwki dotyczฤ…ce zapytaล„ w jฤ™zyku T-SQL i kiedy naleลผy ich uลผywaฤ‡?

Wskazรณwki dotyczฤ…ce zapytania instruujฤ… optymalizator programu SQL Server, aby zmieniล‚ swรณj normalny plan wykonania.

Naleลผy ich uลผywaฤ‡ oszczฤ™dnie โ€” tylko wtedy, gdy w peล‚ni rozumiesz kontekst dystrybucji danych i wykonania.

Przykล‚ad:

SELECT * FROM Orders WITH (NOLOCK) WHERE CustomerID = 102;

Wskazรณwki:

  • NOLOCK: Odczytuje bez blokad (moลผe odczytywaฤ‡ niezatwierdzone dane).
  • FORCESEEK: Wymusza wyszukiwanie indeksowe zamiast skanowania.
  • OPTIMIZE FOR: Przewodniki dotyczฤ…ce wartoล›ci parametrรณw dla generowania planu.
  • RECOMPILE: Wymusza ponownฤ… kompilacjฤ™ przy kaลผdym wykonaniu.

Ostrzeลผenie: Naduลผywanie wskazรณwek moลผe obniลผyฤ‡ wydajnoล›ฤ‡ wraz ze wzrostem iloล›ci danych lub zmianฤ… wzorcรณw. Uลผywaj ich tylko wtedy, gdy plan optymalizatora jest ewidentnie nieefektywny.


32) Wyjaล›nij koncepcjฤ™ buforowania planu wykonania w programie SQL Server.

Serwer SQL buforuje plany wykonania, aby uniknฤ…ฤ‡ ponownej kompilacji w przypadku powtarzajฤ…cych siฤ™ zapytaล„.

Gdy to samo zapytanie jest wykonywane ponownie z identycznฤ… strukturฤ…, ponownie wykorzystywany jest plan z pamiฤ™ci podrฤ™cznej, co poprawia wydajnoล›ฤ‡.

Przykล‚ad:

EXEC GetCustomerOrders @CustomerID = 101;

Korzyล›ci:

  • Zmniejsza obciฤ…ลผenie procesora.
  • Poprawia spรณjnoล›ฤ‡ czasu reakcji.

Problemy:

  • Podsล‚uchiwanie parametrรณw moลผe spowodowaฤ‡ nieefektywne plany.
  • Rozrost pamiฤ™ci podrฤ™cznej planu moลผe spowodowaฤ‡ zuลผycie pamiฤ™ci.

ลagodzenie: Zastosowanie OPTION (RECOMPILE) or OPTIMIZE FOR UNKNOWN gdzie parametry znacznie siฤ™ rรณลผniฤ….


33) Czym jest analizowanie parametrรณw i jak moลผe ono wpล‚ywaฤ‡ na wydajnoล›ฤ‡?

Podsล‚uchiwanie parametrรณw ma miejsce, gdy program SQL Server uลผywa wartoล›ci parametrรณw z pierwszego wykonania zapytania w celu wygenerowania planu, ktรณry jest nastฤ™pnie ponownie wykorzystywany โ€” nawet jeล›li nie jest optymalny w przypadku pรณลบniejszych wykonaล„.

Przykล‚adowy scenariusz:

  • Pierwsze wykonanie: maล‚y zestaw danych โ†’ plan wyszukiwania indeksu.
  • Nastฤ™pne wykonanie: duลผy zbiรณr danych โ†’ ten sam plan wykorzystany ponownie, ale wolno.

Solutions:

  1. Zastosowanie OPTION (RECOMPILE) aby wygenerowaฤ‡ nowe plany.
  2. Uลผyj zmiennych lokalnych do zamaskowania wartoล›ci parametrรณw.
  3. Zastosowanie OPTIMIZE FOR or OPTIMIZE FOR UNKNOWN.

Podsล‚uchiwanie parametrรณw jest jednฤ… z najczฤ™stszych przyczyn nieprzewidywalnej wydajnoล›ci w jฤ™zyku T-SQL.


34) Jak monitorowaฤ‡ i analizowaฤ‡ wydajnoล›ฤ‡ zapytaล„ w programie SQL Server?

Do profilowania i dostrajania wydajnoล›ci moลผna uลผywaฤ‡ rรณลผnych narzฤ™dzi i modeli DMV:

  • Plany wykonania: Ctrl + M w SSMS lub sys.dm_exec_query_plan.
  • Wydziaล‚y komunikacji:

    • sys.dm_exec_query_stats โ€“ Procesor i czas trwania.
    • sys.dm_exec_sql_text โ€“ Tekst SQL.
    • sys.dm_exec_requests โ€“ Aktywne zapytania.
  • Monitor wydajnoล›ci i rozszerzone zdarzenia na dล‚uลผszฤ… metฤ™ trackrรณl.

Przykล‚ad:

SELECT TOP 5
    total_worker_time / execution_count AS AvgCPU,
    total_elapsed_time / execution_count AS AvgTime,
    SUBSTRING(qt.text, 1, 100) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgTime DESC;

35) Wyjaล›nij rolฤ™ statystyk w optymalizacji zapytaล„.

Statystyki opisujฤ… rozkล‚ad danych (np. rรณลผne wartoล›ci, gฤ™stoล›ฤ‡, histogram), ktรณrego optymalizator uลผywa do oszacowania kardynalnoล›ci.

Jeล›li statystyki sฤ… nieaktualne, program SQL Server moลผe wybraฤ‡ zล‚e plany.

Komendy kluczowe:

  • UPDATE STATISTICS Employees;
  • sp_updatestats;
  • Ustawienie automatycznej aktualizacji: domyล›lnie wล‚ฤ…czone.

Najlepsze Praktyki:

  • Trzymaฤ‡ AUTO_UPDATE_STATISTICS wล‚ฤ…czone.
  • W przypadku duลผych tabel zaplanuj aktualizacje rฤ™czne.
  • Zastosowanie FULLSCAN dla indeksรณw krytycznych.

Nieaktualne statystyki sฤ… cichym zabรณjcฤ… wydajnoล›ci.


36) Jaka jest rรณลผnica pomiฤ™dzy wyszukiwaniem indeksu a skanowaniem indeksu?

Operacja OPIS Wydajnoล›ฤ‡ Przypadek uลผycia
Indeks Szukaj Przechodzi bezpoล›rednio do pasujฤ…cych wierszy pompatycznoล›ฤ‡ Wysoce selektywne zapytania
Skanowanie indeksu Odczytuje wszystkie wpisy indeksu sekwencyjnie Wolniej Zapytania o niskiej selektywnoล›ci

Przykล‚ad:

SELECT * FROM Orders WHERE OrderID = 123; -- Seek
SELECT * FROM Orders WHERE Status = 'Active'; -- May Scan

Wskazรณwka dotyczฤ…ca optymalizacji: Utwรณrz indeksy filtrowane lub obejmujฤ…ce, aby przeksztaล‚ciฤ‡ skanowanie w wyszukiwanie.


37) Wyjaล›nij pojฤ™cie tabel partycjonowanych i ich zalety.

Partycjonowanie polega na podziale duลผej tabeli na mniejsze, ล‚atwiejsze do zarzฤ…dzania czฤ™ล›ci (partycje), czฤ™sto w oparciu o zakres kolumny (np. daty).

Korzyล›ci:

  • Szybsze zarzฤ…dzanie danymi (ล‚adowanie/rozล‚adowywanie wedล‚ug partycji).
  • Poprawiona wydajnoล›ฤ‡ zapytaล„ w przypadku duลผych zestawรณw danych.
  • Przetwarzanie rรณwnolegล‚e dla skanowaล„ partycjonowanych.

Przykล‚ad:

CREATE PARTITION FUNCTION pfRange (DATETIME)
AS RANGE LEFT FOR VALUES ('2022-12-31', '2023-12-31');

Przypadek uลผycia: Magazyny danych obsล‚ugujฤ…ce miliardy wierszy, w ktรณrych moลผna efektywnie archiwizowaฤ‡ stare partycje.


38) Czym sฤ… rekurencyjne CTE i jakie majฤ… ograniczenia?

A rekurencyjne wspรณlne wyraลผenie tabelaryczne (CTE) odwoล‚uje siฤ™ do samego siebie, zwykle w przypadku danych hierarchicznych, takich jak schematy organizacyjne lub struktury drzewa.

Przykล‚ad:

WITH EmployeeCTE AS (
    SELECT EmpID, ManagerID, EmpName FROM Employees WHERE ManagerID IS NULL
    UNION ALL
    SELECT e.EmpID, e.ManagerID, e.EmpName
    FROM Employees e
    INNER JOIN EmployeeCTE c ON e.ManagerID = c.EmpID
)
SELECT * FROM EmployeeCTE;

Ograniczenia:

  • Domyล›lny limit rekurencji = Poziomy 100.
  • Moลผe powodowaฤ‡ problemy z wydajnoล›ciฤ…, jeล›li gล‚ฤ™bokoล›ฤ‡ rekursji jest duลผa.
  • Zastosowanie OPTION (MAXRECURSION n) aby dostosowaฤ‡ limit.

39) W jaki sposรณb SQL Server radzi sobie wewnฤ™trznie z bล‚ฤ™dami w transakcjach?

Gdy w transakcji wystฤ…pi bล‚ฤ…d:

  • Jeลผeli to jest ciฤ™ลผki (poziom > 20), poล‚ฤ…czenie zostanie natychmiast zakoล„czone.
  • If niegroลบny, moลผna go zล‚apaฤ‡ TRY...CATCH.

Przykล‚ad:

BEGIN TRY
    BEGIN TRANSACTION;
    UPDATE Accounts SET Balance -= 500 WHERE ID = 1;
    INSERT INTO AuditLog VALUES ('Debit');
    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION;
    PRINT ERROR_MESSAGE();
END CATCH;

Najlepsze praktyki: Zawsze opakowuj DML w TRYโ€ฆCATCH, aby zwiฤ™kszyฤ‡ odpornoล›ฤ‡ na bล‚ฤ™dy.


40) Jakie sฤ… zaawansowane techniki dostrajania wydajnoล›ci jฤ™zyka T-SQL?

  1. Unikaj skalarnych funkcji UDF w SELECT โ€” funkcje inline sฤ… szybsze.
  2. Uลผyj filtrowanych indeksรณw aby zmniejszyฤ‡ rozmiar indeksu.
  3. Wykorzystanie OLTP w pamiฤ™ci (Hekaton) dla systemรณw o wysokiej wspรณล‚bieลผnoล›ci.
  4. Wykonywanie w trybie wsadowym na indeksach kolumnowych do celรณw analitycznych.
  5. Wyeliminuj niejawne konwersje poprzez dopasowywanie typรณw danych.
  6. Uลผyj magazynu zapytaล„ aby porรณwnaฤ‡ plany historyczne.

Przykล‚ad wykrywania konwersji niejawnych:

SELECT * FROM sys.dm_exec_query_stats CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE CAST(query_plan AS NVARCHAR(MAX)) LIKE '%CONVERT_IMPLICIT%';

Dostrajanie wydajnoล›ci to proces ciฤ…gล‚y, a nie jednorazowe wydarzenie.


41) Jak zidentyfikowaล‚byล› zapytania w programie SQL Server wymagajฤ…ce najwiฤ™kszej iloล›ci zasobรณw?

Kosztowne zapytania moลผna zidentyfikowaฤ‡, korzystajฤ…c z dynamicznych widokรณw zarzฤ…dzania (DMV), ktรณre rejestrujฤ… historyczne statystyki wykonania.

Przykล‚ad:

SELECT TOP 10
    total_logical_reads / execution_count AS AvgReads,
    total_worker_time / execution_count AS AvgCPU,
    total_elapsed_time / execution_count AS AvgDuration,
    SUBSTRING(qt.text, 1, 200) AS QueryText
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY AvgCPU DESC;

Kluczowe dane:

  • AvgCPU:ลšredni czas procesora na wykonanie.
  • AvgReads:Intensywnoล›ฤ‡ wejล›cia/wyjล›cia.
  • AvgDuration:Opรณลบnienie wykonania.

Dziฤ™ki takiemu podejล›ciu administratorzy baz danych mogฤ… izolowaฤ‡ skomplikowane zapytania, zanim uลผytkownicy zauwaลผฤ… spadek wydajnoล›ci.


42) Jak wykryฤ‡ i naprawiฤ‡ brakujฤ…ce indeksy w programie SQL Server?

SQL Server automatycznie tracbrakujฤ…ce zalecenia indeksowe dla DMV.

Przykล‚ad:

SELECT
    migs.user_seeks AS Seeks,
    mid.statement AS TableName,
    mid.equality_columns,
    mid.inequality_columns,
    mid.included_columns
FROM sys.dm_db_missing_index_details mid
JOIN sys.dm_db_missing_index_groups mig ON mid.index_handle = mig.index_handle
JOIN sys.dm_db_missing_index_group_stats migs ON mig.index_group_handle = migs.group_handle
ORDER BY migs.user_seeks DESC;

Najlepsze Praktyki:

  • Najpierw naleลผy priorytetyzowaฤ‡ indeksy o wysokim priorytecie.
  • Przed utworzeniem naleลผy dokonaฤ‡ weryfikacji za pomocฤ… planรณw wykonania.
  • Unikaj nadmiernego indeksowania, gdyลผ spowalnia ono zapis.

43) Jaka jest rรณลผnica miฤ™dzy kopiowaniem lustrzanym bazy danych, replikacjฤ… i wysyล‚aniem dziennika?ping?

Cecha Cel W czasie rzeczywistym Failover Zล‚oลผonoล›ฤ‡
Lustrzane odbicie Kopia bazy danych o wysokiej dostฤ™pnoล›ci Tak automatycznie ลšredni
Replikacja Dystrybucja danych w bazach danych Czฤ™ล›ciowa Instrukcja obsล‚ugi Wysoki
Statek Logowyping Strategia DR oparta na kopii zapasowej Nie Instrukcja obsล‚ugi Niski

Wskazรณwki dotyczฤ…ce uลผytkowania:

  • Mirroring โ†’ Systemy wysokiej dostฤ™pnoล›ci OLTP.
  • Replikacja โ†’ Raportowanie rozproszone.
  • Statek Logowyping โ†’ Konfiguracje odzyskiwania po awarii.

44) Jak rozwiฤ…zywaฤ‡ problemy z blokowaniem w programie SQL Server?

Blokowanie wystฤ™puje wtedy, gdy jeden proces utrzymuje blokady potrzebne innemu procesowi.

Aby zidentyfikowaฤ‡ blokery:

SELECT
    blocking_session_id AS Blocker,
    session_id AS Blocked,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;

Solutions:

  • Skrรณฤ‡ dล‚ugoล›ฤ‡ transakcji.
  • Uลผyj izolacji migawek.
  • Dopasuj zapytania, aby zminimalizowaฤ‡ blokowanie.
  • Zidentyfikuj otwarte transakcje trwajฤ…ce dล‚ugo DBCC OPENTRAN.

45) W jaki sposรณb Query Store serwera SQL Server pomaga w dostrajaniu wydajnoล›ci?

Magazyn zapytaล„ przechwytuje tekst zapytania, plany i statystyki czasu wykonania, umoลผliwiajฤ…c analiza regresji planu.

Pomaga zidentyfikowaฤ‡ sytuacjฤ™, w ktรณrej zapytanie nagle staje siฤ™ wolniejsze ze wzglฤ™du na zmiany planu.

Przykล‚ad:

SELECT q.query_id, p.plan_id, rs.avg_duration
FROM sys.query_store_query q
JOIN sys.query_store_plan p ON q.query_id = p.query_id
JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id
ORDER BY rs.avg_duration DESC;

Korzyล›ci:

  • Porรณwnaj plany historyczne.
  • Wymuszaj dobre plany.
  • Track trendรณw wydajnoล›ci na przestrzeni czasu.

46) Jak moลผna zapobiec atakom typu SQL injection w aplikacjach T-SQL?

Obrona podstawowa:

  1. Zastosowanie zapytania parametryczne przez sp_executesql.
  2. Sprawdลบ poprawnoล›ฤ‡ i dezynfekcjฤ™ wszystkich danych wprowadzanych przez uลผytkownika.
  3. Unikaj dynamicznego ล‚ฤ…czenia SQL.
  4. Zatrudniaฤ‡ zasada najmniejszych przywilejรณw dla kont baz danych.

Bezpieczny przykล‚ad:

DECLARE @sql NVARCHAR(MAX);
SET @sql = N'SELECT * FROM Employees WHERE Dept = @Dept';
EXEC sp_executesql @sql, N'@Dept NVARCHAR(50)', @Dept = 'HR';

Mimo ลผe wstrzykiwanie kodu SQL odbywa siฤ™ na poziomie aplikacji, Administratorzy baz danych muszฤ… przeprowadzaฤ‡ audyt procedur skล‚adowanych i dziennikรณw do wykonania bez parametrรณw.


47) Jak wykorzystaฤ‡ Extended Events do szczegรณล‚owego monitorowania wydajnoล›ci?

Extended Events (XEvents) to lekka platforma do monitorowania wydajnoล›ci โ€” nowoczesna alternatywa dla jฤ™zyka SQL Trace.

Przykล‚ad:

CREATE EVENT SESSION TrackQueries
ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(WHERE duration > 1000)
ADD TARGET package0.event_file (SET filename = 'C:\Temp\QueryMonitor.xel');
ALTER EVENT SESSION TrackQueries ON SERVER STATE = START;

Przypadkรณw uลผycia:

  • Monitoruj duลผe zapytania procesora.
  • Wychwytywanie blokad i brakujฤ…cych indeksรณw.
  • Profiluj dล‚ugotrwaล‚e polecenia w ล›rodowisku produkcyjnym, minimalizujฤ…c narzut.

48) Czym sฤ… indeksy filtrowane i kiedy naleลผy ich uลผywaฤ‡?

Indeks filtrowany indeksuje tylko podzbiรณr wierszy speล‚niajฤ…cych warunek filtru โ€” co poprawia wydajnoล›ฤ‡ i zmniejsza iloล›ฤ‡ miejsca do przechowywania.

Przykล‚ad:

CREATE INDEX IX_ActiveEmployees
ON Employees (Department)
WHERE Status = 'Active';

Korzyล›ci:

  • Mniejszy rozmiar indeksu.
  • Szybsza konserwacja.
  • Zoptymalizowany pod kฤ…tem zapytaล„ selektywnych.

Najlepszy dla: Kolumny z nierรณwnomiernym rozkล‚adem danych (np. rekordy aktywne i nieaktywne).


49) Jak bezpiecznie migrowaฤ‡ dane miฤ™dzy ล›rodowiskami SQL Server?

Bezpieczna migracja danych wymaga zaplanowania spรณjnoล›ฤ‡, przestoje i wycofywanie.

Najlepsze Praktyki:

  1. Zastosowanie replikacja transakcyjna or przechwytywanie danych zmianowych (CDC) do synchronizacji na ลผywo.
  2. Tymczasowo wyล‚ฤ…cz ograniczenia i wyzwalacze.
  3. Zastosowanie BCP or SSIS do masowego przesyล‚ania danych.
  4. Sprawdลบ liczbฤ™ wierszy i sumy kontrolne.
  5. Zawsze uruchamiaj kontrole integralnoล›ci po migracji (DBCC CHECKDB).

Przykล‚ad:

bcp Database.dbo.Table out TableData.dat -n -S Server -T

Testowanie skryptรณw migracji w ล›rodowisku przejล›ciowym nie podlega negocjacjom.


50) Jak identyfikowaฤ‡ i rozwiฤ…zywaฤ‡ problemy zwiฤ…zane z zapytaniami wraลผliwymi na parametry (PSQ)?

Zapytania wraลผliwe na parametry dziaล‚ajฤ… niespรณjnie w zaleลผnoล›ci od wartoล›ci parametrรณw, co jest czฤ™stym problemem w praktyce.

Wykrycie: Zastosowanie Sklep zapytaล„ or sys.dm_exec_query_stats aby zidentyfikowaฤ‡ wiele planรณw dla jednego zapytania.

Strategie naprawcze:

  1. Zastosowanie OPCJA (PONOWNA KOMPILACJA) za kaลผdฤ… egzekucjฤ™.
  2. Zastosowanie OPTYMALIZUJ POD Kฤ„TEM NIEZNANEGO aby stworzyฤ‡ ogรณlny plan.
  3. Stwรณrz przewodniki po planach aby wymusiฤ‡ optymalne ล›cieลผki wykonania.
  4. Zastosowanie wskazรณwki dotyczฤ…ce zapytaล„ tylko jeล›li to konieczne.

Zagadnienia wraลผliwe na parametry wymagajฤ… znalezienia rรณwnowagi miฤ™dzy stabilnoล›ciฤ… planu i przewidywalnoล›ciฤ… wydajnoล›ci.

๐Ÿ” Najwaลผniejsze pytania na rozmowie kwalifikacyjnej dotyczฤ…ce jฤ™zyka T-SQL, scenariusze z ลผycia wziฤ™te i odpowiedzi strategiczne

1) Jaka jest rรณลผnica miฤ™dzy INNER JOIN i LEFT JOIN w jฤ™zyku T-SQL?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… chce sprawdziฤ‡ Twojฤ… wiedzฤ™ na temat operacji ล‚ฤ…czenia i sposobu zarzฤ…dzania relacjami miฤ™dzy danymi w zapytaniach SQL.

Przykล‚adowa odpowiedลบ: An INNER JOIN zwraca tylko wiersze, ktรณre majฤ… pasujฤ…ce wartoล›ci w obu tabelach, podczas gdy LEFT JOIN Zwraca wszystkie wiersze z lewej tabeli wraz z pasujฤ…cymi wierszami z prawej tabeli. W przypadku braku dopasowania, dla kolumn z prawej tabeli zwracane sฤ… wartoล›ci NULL. To rozrรณลผnienie jest kluczowe podczas pracy z czฤ™ล›ciowymi lub opcjonalnymi relacjami w bazach danych.


2) Jak zidentyfikowaฤ‡ i usunฤ…ฤ‡ duplikaty rekordรณw z tabeli w jฤ™zyku T-SQL?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… chce sprawdziฤ‡ Twojฤ… umiejฤ™tnoล›ฤ‡ korzystania z funkcji okna i CTE w celu radzenia sobie z problemami zwiฤ…zanymi z jakoล›ciฤ… danych.

Przykล‚adowa odpowiedลบ: Uลผyล‚bym wspรณlnego wyraลผenia tabelarycznego (CTE) w poล‚ฤ…czeniu z ROW_NUMBER() Funkcja identyfikacji duplikatรณw. Na przykล‚ad:

WITH CTE AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS rn
  FROM MyTable
)
DELETE FROM CTE WHERE rn > 1;

Takie podejล›cie pozwala usunฤ…ฤ‡ duplikaty, zachowujฤ…c jednoczeล›nie jeden unikatowy rekord dla kaลผdej grupy.


3) Czy moลผesz wyjaล›niฤ‡, czym jest CTE (Common Table Expression) i kiedy siฤ™ go uลผywa?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… sprawdza Twojฤ… wiedzฤ™ na temat strukturyzacji zapytaล„ i tymczasowych zestawรณw wynikรณw.

Przykล‚adowa odpowiedลบ: CTE to tymczasowy zbiรณr wynikรณw zdefiniowany w zakresie wykonania pojedynczego zapytania. Jest on przydatny do upraszczania zล‚oลผonych zล‚ฤ…czeล„ i podzapytaล„, poprawy czytelnoล›ci i umoลผliwienia zapytaล„ rekurencyjnych. W mojej poprzedniej roli czฤ™sto korzystaล‚em z CTE, aby rozbiฤ‡ wieloetapowฤ… logikฤ™ agregacji na ล‚atwiejsze w utrzymaniu komponenty.


4) Jak radzisz sobie z dostrajaniem wydajnoล›ci zapytaล„ T-SQL?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… chce oceniฤ‡ Twoje doล›wiadczenie w optymalizacji zapytaล„ i rozwiฤ…zywaniu problemรณw z wydajnoล›ciฤ….

Przykล‚adowa odpowiedลบ: Zaczynam od analizy planu wykonania, aby zidentyfikowaฤ‡ powolne operacje, takie jak skanowanie tabel czy kosztowne sprzฤ™ลผenia. Nastฤ™pnie sprawdzam brakujฤ…ce indeksy, zbฤ™dne podzapytania lub nieefektywne sprzฤ™ลผenia. Analizujฤ™ rรณwnieลผ statystyki i stosujฤ™ strategie indeksowania, takie jak indeksy pokrywajฤ…ce lub filtrowane, aby poprawiฤ‡ wydajnoล›ฤ‡. Na koniec sprawdzam logikฤ™ zapytaล„, aby upewniฤ‡ siฤ™, ลผe wykorzystuje ona operacje oparte na zbiorach, a nie przetwarzanie wiersz po wierszu.


5) Opisz sytuacjฤ™, w ktรณrej musiaล‚eล› debugowaฤ‡ wolno dziaล‚ajฤ…ce zapytanie w ล›rodowisku produkcyjnym. Jakie kroki podjฤ…ล‚eล›?

Oczekuje siฤ™ od kandydata: To pytanie behawioralne ocenia Twoje umiejฤ™tnoล›ci rozwiฤ…zywania rzeczywistych problemรณw i komunikacji.

Przykล‚adowa odpowiedลบ: Na poprzednim stanowisku wykonanie zapytania do raportu trwaล‚o ponad 20 minut. Przeanalizowaล‚em plan wykonania i odkryล‚em, ลผe w jednym z ล‚ฤ…czeล„ brakowaล‚o indeksu w kolumnie klucza obcego. Po utworzeniu indeksu i zaktualizowaniu statystyk czas wykonania zapytania skrรณciล‚ siฤ™ do poniลผej 30 sekund. Udokumentowaล‚em rรณwnieลผ poprawkฤ™ i podzieliล‚em siฤ™ niฤ… z zespoล‚em, aby zapobiec podobnym problemom w przyszล‚oล›ci.


6) Czym sฤ… tabele tymczasowe i zmienne tabelowe i czym siฤ™ od siebie rรณลผniฤ…?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… sprawdza Twojฤ… wiedzฤ™ na temat opcji tymczasowego przechowywania danych w jฤ™zyku T-SQL.

Przykล‚adowa odpowiedลบ: Tabele tymczasowe (#TempTable) sฤ… tworzone w bazie danych tempdb i obsล‚ugujฤ… indeksy, ograniczenia i statystyki. Zmienne tabeli (@TableVar) sฤ… przechowywane w pamiฤ™ci i majฤ… ograniczone wsparcie statystyczne, co czyni je odpowiednimi dla mniejszych zbiorรณw danych. Tabele tymczasowe sฤ… lepsze w przypadku duลผych lub zล‚oลผonych zbiorรณw danych, natomiast zmienne tabelowe sฤ… bardziej wydajne w przypadku maล‚ych, krรณtkotrwaล‚ych danych.


7) Jak poradziล‚byล› sobie z obsล‚ugฤ… bล‚ฤ™dรณw i transakcjami w jฤ™zyku T-SQL?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… sprawdza Twojฤ… wiedzฤ™ na temat integralnoล›ci transakcji i obsล‚ugi wyjฤ…tkรณw.

Przykล‚adowa odpowiedลบ: uลผywam BEGIN TRANSACTION, COMMIT, ROLLBACK oล›wiadczenia zapewniajฤ…ce spรณjnoล›ฤ‡ danych. Doล‚ฤ…czam rรณwnieลผ TRY...CATCH bloki do poprawnego obsล‚ugiwania bล‚ฤ™dรณw. Na przykล‚ad:

BEGIN TRY
  BEGIN TRANSACTION
    -- SQL operations here
  COMMIT TRANSACTION
END TRY
BEGIN CATCH
  ROLLBACK TRANSACTION
  PRINT ERROR_MESSAGE()
END CATCH

Takie podejล›cie zapobiega czฤ™ล›ciowym aktualizacjom danych w przypadku wystฤ…pienia bล‚ฤ™dรณw.


8) Jak uลผywaฤ‡ funkcji okna w jฤ™zyku T-SQL i czy moลผesz podaฤ‡ przykล‚ad?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… chce oceniฤ‡ Twojฤ… biegล‚oล›ฤ‡ w formuล‚owaniu zaawansowanych zapytaล„ analitycznych.

Przykล‚adowa odpowiedลบ: Funkcje okienkowe umoลผliwiajฤ… wykonywanie obliczeล„ na zestawach wierszy powiฤ…zanych z bieลผฤ…cym wierszem bez zwijania danych. Na przykล‚ad:

SELECT 
  EmployeeID, 
  Salary,
  RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM Employees;

Funkcja ta przypisuje pracownikom numery rankingowe na podstawie ich wynagrodzenia, co uล‚atwia analizฤ™ trendรณw w zakresie wydajnoล›ci.


9) Opowiedz mi o zล‚oลผonym projekcie T-SQL, nad ktรณrym pracowaล‚eล› i jak podszedล‚eล› do jego wyzwaล„.

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… zwraca uwagฤ™ na duลผe doล›wiadczenie, umiejฤ™tnoล›ฤ‡ rozwiฤ…zywania problemรณw i pracฤ™ zespoล‚owฤ….

Przykล‚adowa odpowiedลบ: Na moim ostatnim stanowisku zbudowaล‚em potok ETL magazynu danych, wykorzystujฤ…c procedury skล‚adowane T-SQL. Wyzwaniem byล‚a efektywna obsล‚uga duลผych wolumenรณw danych. Optymalizowaล‚em zapytania z wykorzystaniem partycjonowanych tabel, obciฤ…ลผeล„ przyrostowych i przetwarzania wsadowego. Wspรณล‚pracowaล‚em rรณwnieลผ z zespoล‚em BI, aby zapewniฤ‡ spรณjnoล›ฤ‡ projektรณw schematรณw i zwiฤ™kszyฤ‡ szybkoล›ฤ‡ raportowania o ponad 40%.


10) Jak poradziล‚byล› sobie z sytuacjฤ…, w ktรณrej napisana przez Ciebie procedura skล‚adowana spowodowaล‚aby blokadฤ™ w ล›rodowisku produkcyjnym?

Oczekuje siฤ™ od kandydata: Osoba przeprowadzajฤ…ca rozmowฤ™ kwalifikacyjnฤ… sprawdza Twoje umiejฤ™tnoล›ci zarzฤ…dzania kryzysowego i ล›wiadomoล›ฤ‡ technicznฤ….

Przykล‚adowa odpowiedลบ: Najpierw zidentyfikowaล‚bym impas za pomocฤ… programu SQL Server sys.dm_tran_locks i grafy zakleszczeล„. Nastฤ™pnie analizowaล‚em kolejnoล›ฤ‡ dostฤ™pu do zasobรณw i refaktoryzowaล‚em procedurฤ™, aby uzyskaฤ‡ blokady w spรณjnej kolejnoล›ci. W mojej poprzedniej pracy wdroลผyล‚em rรณwnieลผ logikฤ™ ponawiania prรณb dla transakcji, ktรณrych dotyczy problem, i zaplanowaล‚em regularne monitorowanie, aby wczeล›nie wykrywaฤ‡ podobne wzorce.

Podsumuj ten post nastฤ™pujฤ…co: