Top 50 T-SQL-interviewvragen en antwoorden (2026)

T-SQL-interviewvragen en -antwoorden

Bereidt u zich voor op een T-SQL-interview? Tijd om je begrip van hoe databases echt onder de oppervlakte werken, te vergroten. Met T-SQL-interviewvragenbeoordelen recruiters niet alleen uw syntaxiskennis, maar ook uw beheersing van gegevensmanipulatie, optimalisatie en logische structurering.

De kansen in dit domein blijven toenemen, omdat bedrijven afhankelijk zijn van datagedreven inzichten. Kandidaten met sterke technische expertise, analytische vaardigheden en praktische probleemoplossende vaardigheden vallen op โ€“ of het nu starters zijn of professionals met 5 tot 10 jaar ervaring. Het begrijpen van vragen en antwoorden op zowel basis- als gevorderd niveau helpt teamleiders, managers en technische seniors om sterke SQL-vaardigheden en ervaring op root-niveau te identificeren.

Onze gids is gebaseerd op inzichten van meer dan 65 personeelsmanagers, meer dan 40 senior ontwikkelaars en dataprofessionals uit verschillende sectoren. Zo wordt alles behandeld, van fundamentele SQL-logica tot geavanceerde optimalisatietechnieken waar technische leiders over de hele wereld op vertrouwen.
Lees meer ...

๐Ÿ‘‰ Gratis PDF-download: T-SQL-interviewvragen en -antwoorden

Top T-SQL-interviewvragen en -antwoorden

1) Wat is T-SQL en hoe verschilt het van standaard-SQL?

Transact-SQL (T-SQL) is Microsoft's gepatenteerde uitbreiding van de SQL-taal, voornamelijk gebruikt met Microsoft SQL ServerHet verbetert standaard SQL door procedurele programmeerfuncties te introduceren, zoals variabelen, voorwaarden, lussen, foutverwerking en ingebouwde functies. Terwijl standaard SQL zich richt op gegevensmanipulatie (SELECT, INSERT, UPDATE, DELETE), ondersteunt T-SQL 'control-of-flow'-instructies (IFโ€ฆELSE, WHILE), transactieverwerking en systeemfuncties waarmee ontwikkelaars complexe scripts kunnen schrijven.

Aspect SQL T-SQL
Eigendom ANSI/ISO-norm Microsoft
Procedurele logica Beperkt Ondersteund (variabelen, lussen)
Foutverwerking minimaal TRYโ€ฆCATCH ondersteund
Primair gebruik Generieke DB's SQL Server

Voorbeeld:

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

2) Leg de verschillende typen joins in T-SQL uit met voorbeelden.

Joins in T-SQL combineren rijen uit twee of meer tabellen op basis van gerelateerde kolommen. Kennis van de typen is cruciaal voor relationele dataquery's.

Deelnametype Beschrijving Voorbeeldsyntaxis
INNER JOIN Retourneert alleen overeenkomende rijen SELECT * FROM A INNER JOIN B ON A.id = B.id;
Links aansluiten Allemaal van links + wedstrijden van rechts SELECT * FROM A LEFT JOIN B ON A.id = B.id;
RECHTS AANMELDEN Allemaal van rechts + wedstrijden van links SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
VOLLEDIGE AANSLUITING Combineert LINKS + RECHTS SELECT * FROM A FULL JOIN B ON A.id = B.id;
KRUIS MEE Cartesiaans product SELECT * FROM A CROSS JOIN B;

Praktisch voorbeeld: aansluiting Orders en Customers om te achterhalen welke klanten bestellingen hebben geplaatst met behulp van INNER JOIN.


3) Wat zijn Common Table Expressions (CTE's) en wat zijn hun voordelen?

Een Common Table Expression (CTE) biedt een tijdelijke benoemde resultaatset waarnaar binnen een SELECT, INSERT, UPDATEof DELETE verklaring. Het verbetert de leesbaarheid en vereenvoudigt recursieve query's.

Voordelen:

  • Verbetert de duidelijkheid en het onderhoud van query's.
  • Maakt recursie mogelijk (voor hiรซrarchische gegevens, zoals organigrammen).
  • Helpt herhaalde subquery's te voorkomen.
  • Verhoogt de modulariteit in grote scripts.

Voorbeeld:

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

4) Wat is het verschil tussen tijdelijke tabellen en tabelvariabelen in T-SQL?

Beide worden gebruikt om tussenresultaten op te slaan, maar hun gedrag en bereik verschillen aanzienlijk.

Kenmerk Tijdelijke tabel (#Temp) Tabelvariabele (@TableVar)
Opgeslagen in TempDB Geheugen (met beperkt TempDB-gebruik)
Transactionele reikwijdte Volgt transacties Onafhankelijk van transacties
Indexen ondersteunde Beperkt
Prestaties Beter voor grote datasets Beter voor kleine datasets

Voorbeeld:

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

Gebruik tijdelijke tabellen wanneer u met grote datasets werkt of indexen nodig hebt.


5) Leg het concept van transacties in T-SQL en hun levenscyclus uit.

Een transactie in T-SQL zorgt ervoor dat een reeks bewerkingen als รฉรฉn logische eenheid wordt uitgevoerd. De levenscyclus omvat: BEGIN MET DE TRANSACTIE, COMMITen TERUGROLLEN.

Stadium Beschrijving
BEGIN MET DE TRANSACTIE Start de transactie
COMMIT-TRANSACTIE Slaat alle wijzigingen permanent op
ROLLBACK-TRANSACTIE Maakt alle bewerkingen sinds de laatste BEGIN ongedaan

Voorbeeld:

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

Als er halverwege een fout optreedt, ROLLBACK behoudt de integriteit van de gegevens.


6) Wat is het verschil tussen de opdrachten DELETE, TRUNCATE en DROP?

commando Functie Rollback Beรฏnvloedt de structuur Snelheid
VERWIJDEREN Verwijdert specifieke rijen Ja Nee langzamer
AFKNOPEN Verwijdert alle rijen Nee (meestal) Nee Snel
DROP Verwijdert de hele tabel Nee Ja Snelste

Voorbeeld:

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

Gebruik DELETE voor selectieve verwijdering, TRUNCATE voor het opruimen, en DROP om de tafel volledig te verwijderen.


7) Hoe werkt foutverwerking in T-SQL?

T-SQL biedt gestructureerde foutverwerking via de TRY...CATCH blok, waardoor ontwikkelaars op een elegante manier runtime-fouten kunnen beheren.

Voorbeeld:

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

Deze aanpak isoleert de foutieve bewerking en voorkomt dat de transactie de data-integriteit aantast. Ontwikkelaars hebben ook toegang tot systeemfuncties zoals ERROR_NUMBER() or ERROR_SEVERITY() voor diagnostiek.


8) Wat zijn de verschillende manieren om de prestaties van T-SQL-query's te optimaliseren?

Optimalisatie omvat het verfijnen van SQL-ontwerp, indexering en uitvoeringsstrategieรซn.

Belangrijkste technieken:

  1. Gebruik juiste indexering op kolommen die vaak worden opgevraagd.
  2. vermijden SELECT * โ€” kolommen expliciet specificeren.
  3. Gebruik set-gebaseerde bewerkingen in plaats van cursors.
  4. Analyseer uitvoeringsplannen met SQL Server Management Studio.
  5. Gebruik JOINs efficiรซnt met de juiste AAN-omstandigheden.
  6. Verminderen geneste subquery's; geef de voorkeur aan CTE's of tijdelijke tabellen.

Prestatie-afstemming in T-SQL omvat ook het monitoren van query-uitvoeringsstatistieken met behulp van SET STATISTICS IO ON.


9) Wat zijn vensterfuncties en wanneer moet je ze gebruiken?

Vensterfuncties voeren berekeningen uit op een reeks rijen die gerelateerd zijn aan de huidige rij, zonder deze samen te voegen tot รฉรฉn resultaat. Ze zijn handig voor rangschikking, voortschrijdende totalen en voortschrijdende gemiddelden.

Voorbeeld:

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

Veel voorkomende functies zijn onder meer: RANK(), ROW_NUMBER(), DENSE_RANK()en SUM() OVER().

Deze zijn essentieel voor analytische workloads waarbij u zowel geaggregeerde gegevens als gegevens op rijniveau nodig hebt.


10) Leg het verschil uit tussen geclusterde en niet-geclusterde indexen.

Kenmerk Clustered Index Niet-Clustered Index
Data opslag Herschikt de tabel fysiek Aparte structuur
Aantal per tafel One meervoudig
Prestaties Sneller voor bereikquery's Sneller voor specifieke opzoekacties
Gebruiksvoorbeeld Hoofdsleutel Secundaire zoekopdrachten

Voorbeeld:

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

De keuze van het juiste indextype heeft rechtstreeks invloed op de uitvoeringssnelheid van query's en de opslagefficiรซntie.


11) Wat zijn stored procedures in T-SQL en waarom worden ze gebruikt?

Een opgeslagen procedure is een vooraf gecompileerde verzameling van een of meer SQL-instructies die op de server zijn opgeslagen. Ze verbeteren de prestaties, beveiliging en herbruikbaarheid doordat u logica kunt inkapselen en herhaaldelijk kunt uitvoeren zonder opnieuw te compileren. Opgeslagen procedures verminderen het netwerkverkeer en ondersteunen parameters voor dynamische uitvoering.

Voorbeeld:

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

Voordelen:

  • Betere prestaties dankzij precompilatie.
  • Verbeterde beveiliging door gecontroleerde uitvoering.
  • Eenvoudiger codeonderhoud en modularisatie.

12) Leg het verschil uit tussen een opgeslagen procedure en een functie in T-SQL.

Aspect Opgeslagen procedure Functie
Retourtype Kan meerdere waarden retourneren Moet รฉรฉn enkele waarde of tabel retourneren
Gebruik in SELECT Niet toegestaan Toegestaan
Foutverwerking TRYโ€ฆCATCH ondersteund Beperkt
Uitvoering Uitgevoerd via EXEC Wordt inline met SQL gebruikt
Transactiecontrole ondersteunde Niet ondersteund

Voorbeeld:

  • Procedure: EXEC GetEmployeeDetails 'HR';
  • Functionaliteit: SELECT dbo.GetSalary(101);

Functies zijn ideaal voor berekeningen, procedures zijn beter voor bedrijfslogica en gegevensmanipulatie.


13) Wat is een trigger in T-SQL en wat zijn de typen ervan?

Een trigger is een speciale opgeslagen procedure die automatisch wordt uitgevoerd als reactie op bepaalde gebeurtenissen (INSERT, UPDATE, DELETE) in een tabel of view. Triggers worden gebruikt voor het afdwingen van bedrijfsregels, het controleren van wijzigingen of het handhaven van referentiรซle integriteit.

Type Beschrijving
NA Trigger Branden nadat het evenement is afgelopen
IN PLAATS VAN Trigger Wordt uitgevoerd in plaats van de triggergebeurtenis

Voorbeeld:

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

Vermijd het overmatig gebruiken van triggers. Ze kunnen de prestaties beรฏnvloeden en het debuggen ingewikkeld maken.


14) Hoe ga je om met NULL-waarden in T-SQL?

NULL staat voor ontbrekende of onbekende gegevens. T-SQL biedt verschillende functies om hiermee effectief om te gaan:

  • ISNULL(expression, replacement) โ†’ vervangt NULL door een standaardwaarde.
  • COALESCE(expression1, expression2, ...) โ†’ retourneert de eerste niet-NULL-waarde.
  • NULLIF(expression1, expression2) โ†’ retourneert NULL als de expressies gelijk zijn.

Voorbeeld:

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

Aanbevolen werkwijze: Houd altijd rekening met NULL-waarden in joins en voorwaarden om onverwachte resultaten te voorkomen.


15) Wat zijn cursors in T-SQL en wanneer moeten ze worden vermeden?

Een cursor maakt rij-voor-rij verwerking van queryresultaten mogelijk โ€“ handig voor complexe logica waar set-gebaseerde bewerkingen onvoldoende zijn. Cursors zijn echter traag en veel hulpbronnen vergeleken met set-gebaseerde alternatieven.

Voorbeeld:

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

Nadelen:

  • Verhoogd geheugengebruik.
  • Slechte schaalbaarheid.
  • Verminderde prestatie.

alternatief: Gebruik waar mogelijk tabelkoppelingen, subquery's en vensterfuncties.


16) Leg de MERGE-instructie en de use cases ervan uit.

Het MERGE verklaring voert uit INSERT, UPDATEen VERWIJDEREN bewerkingen in รฉรฉn enkele opdracht โ€” ideaal voor het synchroniseren van twee tabellen.

Syntaxisvoorbeeld:

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;

Gebruik Gevallen:

  • Datawarehousing (synchronisatie van staging en doeltabellen).
  • Incrementeel laden van gegevens.
  • Audit- of dimensietabellen onderhouden.

17) Wat zijn de verschillende typen gebruikersgedefinieerde functies (UDF's) in T-SQL?

Type Beschrijving Voorbeeld
Scalair Retourneert รฉรฉn enkele waarde CREATE FUNCTION GetTax(@Salary DECIMAL) RETURNS DECIMAL
Inline tabel-gewaardeerd Retourneert een tabel via een enkele SELECT RETURN SELECT * FROM Employees WHERE Dept = 'HR'
Tabel met meerdere statements Retourneert een tabel na meerdere statements Nuttig voor complexe logica

Functies bevorderen hergebruik van code en verbeteren modulair queryontwerp.

Ze moeten, waar mogelijk, deterministisch zijn (hetzelfde resultaat opleveren voor dezelfde invoer) om de prestaties te optimaliseren.


18) Wat is normalisatie en wat zijn de voor- en nadelen ervan?

Normalisatie is het proces waarbij gegevens in een database worden geordend om redundantie te minimaliseren en de integriteit te verbeteren. Dit omvat het opsplitsen van tabellen in kleinere, gerelateerde entiteiten.

Normale vorm Regel Voorbeeld
1NF Elimineer herhalende groepen Splits komma-gescheiden gegevens
2NF Gedeeltelijke afhankelijkheden verwijderen Zorg voor volledige afhankelijkheid van de primaire sleutel
3NF Transitieve afhankelijkheden verwijderen Verplaats afgeleide kenmerken

Voordelen:

  • Vermindert redundantie.
  • Zorgt voor consistente gegevens.
  • Vereenvoudigt het onderhoud.

Nadelen:

  • Complexe verbindingen.
  • Mogelijke prestatie-afwegingen bij analytische query's.

19) Wat zijn de verschillende soorten beperkingen in T-SQL?

Beperkingen leggen regels op over de integriteit van gegevens in een tabel.

Beperking Doel Voorbeeld
HOOFDSLEUTEL Identificeert elke rij op unieke wijze PRIMARY KEY (EmpID)
VREEMDE SLEUTEL Koppelt twee tabellen FOREIGN KEY (DeptID)
. Zorgt voor unieke kolomwaarden UNIQUE (Email)
BEKIJK Valideert gegevensbereik CHECK (Age >= 18)
DEFAULT Biedt standaardwaarden DEFAULT GETDATE()

Beperkingen zorgen voor nauwkeurigheid en betrouwbaarheid, waardoor de noodzaak voor uitgebreide validatie op applicatieniveau afneemt.


20) Hoe beheert u machtigingen en beveiliging in T-SQL?

T-SQL beheert databasebeveiliging via logins, gebruikers, rollen en machtigingen.

Machtigingen kunnen op object- of schemaniveau worden verleend of ingetrokken.

Voorbeeld:

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

Praktische tips:

  • Gebruik rollen in plaats van directe gebruikersrechten.
  • Vermijd te gebruiken sa of systeemaccounts voor applicaties.
  • Controleer regelmatig de machtigingen met sys.database_permissions.

Goed machtigingsbeheer zorgt ervoor dat het principe van minimale privileges wordt toegepast en dat het beveiligingsbeleid wordt nageleefd.


21) Wat zijn de verschillende transactie-isolatieniveaus in T-SQL?

Transactie-isolatieniveaus bepalen hoe รฉรฉn transactie van andere wordt geรฏsoleerd โ€“ balanceren consistentie with samenloopSQL Server ondersteunt het volgende:

Isolatieniveau Beschrijving Vuile Lees Niet-herhaalbare lezing Fantoom lezen
LEES NIET AANGEVRAAGD Leest niet-vastgelegde gegevens Ja Ja Ja
LEES TOEGEWIJD Standaard; sloten voorkomen onleesbare gegevens Nee Ja Ja
HERHAALBAAR LEZEN Voorkomt dat gegevens worden gewijzigd totdat er een commit plaatsvindt Nee Nee Ja
SERIALISEERBAAR Volledige isolatie; hoogste vergrendeling Nee Nee Nee
MOMENTOPNAME Gebruikt versiebeheer, geen vergrendeling Nee Nee Nee

Voorbeeld:

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

Gebruik MOMENTOPNAME voor systemen met een hoge mate van gelijktijdigheid om blokkering te minimaliseren zonder dat dit ten koste gaat van de consistentie.


22) Wat is een deadlock in SQL Server en hoe kun je dit voorkomen?

A impasse Treedt op wanneer twee transacties vergrendelingen hebben die de ander nodig heeft, wat resulteert in een patstelling. SQL Server detecteert en beรซindigt automatisch รฉรฉn transactie als het slachtoffer van de deadlock.

Voorbeeldscenario:

  • Transactie A vergrendelt Tabel1 en wacht vervolgens op Tabel2.
  • Transactie B vergrendelt Tabel2 en wacht vervolgens op Tabel1.

Preventietechnieken:

  1. Open de bronnen in dezelfde volgorde.
  2. Houd transacties kort.
  3. Gebruik passende isolatieniveaus.
  4. Vermijd gebruikersinteractie bij transacties.

Gebruik SQL Profiler of Extended Events om trace-deadlocks in realtime.


23) Leg het verschil uit tussen pessimistische en optimistische gelijktijdigheidscontrole.

Type Beschrijving Sluitmechanisme Use Case
Pessimistisch Vergrendelt gegevens tijdens een transactie Zware vergrendeling Omgevingen met veel conflicten
Optimistisch Gebruikt rijversiebeheer en controleert vรณรณr vastlegging Minimale vergrendeling Workloads met veel leeswerk en weinig conflicten

Voorbeeld:

  • Pessimistisch: Standaard READ COMMITTED vergrendeling.
  • Optimistisch: SNAPSHOT isolatie met rijversiebeheer.

Optimistische gelijktijdigheid verbetert de prestaties voor systemen met grote leesbewerkingen en onregelmatige updates.


24) Hoe kun je een langzame T-SQL-query analyseren en optimaliseren?

  1. Controleer uitvoeringsplan: Identificeer scans, ontbrekende indexen en kostbare bewerkingen.
  2. Gebruik SET STATISTICS IO/TIME: Analyseer I/O- en CPU-gebruik.
  3. Vermijd cursors en lussen: Vervang door set-gebaseerde bewerkingen.
  4. Indexoptimalisatie: Gefragmenteerde indexen toevoegen of reorganiseren.
  5. Parameter snuiven: Gebruik OPTION (RECOMPILE) om nieuwe plannen te maken.

Voorbeeld:

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

Regelmatig toezicht houden op langzame query's met Dynamische Management Views (DMV's) als sys.dm_exec_query_stats is een best practice.


25) Wat is dynamische SQL en wat zijn de voor- en nadelen ervan?

Met dynamische SQL kunt u tijdens runtime dynamisch SQL-instructies construeren met behulp van variabelen.

Voorbeeld:

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

Voordelen:

  • Flexibiliteit voor variabele tabelnamen of filters.
  • Herbruikbaar voor meerdere schema's.

Nadelen:

  • Kwetsbaar voor SQL Injection indien niet geparametriseerd.
  • Moeilijker te debuggen en onderhouden.

Gebruik altijd sp_executesql met parameters voor veiligheid.


26) Wat zijn tijdelijke objecten in T-SQL en wat zijn de verschillen?

Tijdelijke objecten worden opgeslagen in TempDB en helpen bij het beheren van tussenliggende gegevens.

Object type strekking Voorbeeld
Lokale temperatuurtabel Sessiespecifiek CREATE TABLE #TempTable
Globale temperatuurtabel Zichtbaar voor alle sessies CREATE TABLE ##TempGlobal
Tabelvariabele Batch-specifiek DECLARE @Temp TABLE (...)

Praktische tips:

  • Geef de voorkeur aan tabelvariabelen voor kleinere datasets.
  • Gebruik lokale tijdelijke tabellen voor grotere hoeveelheden gegevens waarvoor indexering nodig is.
  • Verwijder tijdelijke tabellen expliciet om bronnen sneller vrij te geven.

27) Hoe gebruik je vensterpartitioneringsfuncties in T-SQL?

Met partitionering kunt u vensterfuncties toepassen op specifieke subsets van gegevens.

Voorbeeld:

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

Voordelen:

  • Bereken efficiรซnt rangschikkingen, totalen en gemiddelden per groep.
  • Maakt self-joins en subquery's overbodig.

Gebruik Gevallen: Salarisschalen, verkoopranglijsten en trendanalyses.


28) Wat is het verschil tussen UNION en UNION ALL in T-SQL?

Clausule duplicaten Prestaties Use Case
UNION Verwijdert duplicaten Langzamer (gebruikt sort/distinct) Resultaatsets op een schone manier combineren
UNIE ALLEN Houdt duplicaten bij Sneller Aggregatie of datamigratie

Voorbeeld:

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers;

Verkiezen UNION ALL wanneer duplicaten acceptabel zijn en de prestaties van belang zijn.


29) Hoe werk je met JSON-gegevens in T-SQL?

SQL Server ondersteunt native JSON-functies voor het parseren en genereren van JSON-gegevens.

Voorbeeld:

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

Belangrijkste Functies:

  • JSON_VALUE() โ†’ Extracts scalaire waarden.
  • JSON_QUERY() โ†’ ExtracTypeScript-objecten/arrays.
  • OPENJSON() โ†’ Parseert JSON in rijen.
  • FOR JSON โ†’ Converteert queryresultaten naar JSON-formaat.

Handig voor API's, hybride systemen en NoSQL-integraties.


30) Hoe kunt u TempDB in SQL Server beheren en optimaliseren?

TempDB is een systeemdatabase die cruciaal is voor tijdelijke opslag en versiebeheer. Slecht beheer kan ernstige prestatieproblemen veroorzaken.

Optimalisatie technieken:

  1. Plaats TempDB op een snelle opslag (SSD).
  2. Maak vooraf de juiste grootte van gegevens- en logbestanden.
  3. Gebruik meerdere gegevensbestanden (1 per CPU-kern tot maximaal 8).
  4. Bewaken met sys.dm_db_file_space_usage.
  5. Maak tijdelijke objecten regelmatig schoon.

Voorbeeldquery:

SELECT * FROM sys.dm_db_file_space_usage;

Door TempDB proactief te beheren, wordt concurrentie op toewijzingspagina's vermeden en wordt de algehele databasedoorvoer verbeterd.


31) Wat zijn queryhints in T-SQL en wanneer moeten ze worden gebruikt?

Met queryhints krijgt de SQL Server-optimizer de opdracht om het normale uitvoeringsplan te wijzigen.

Ze moeten spaarzaam worden gebruikt, alleen als u de context van de gegevensdistributie en -uitvoering volledig begrijpt.

Voorbeeld:

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

Veelvoorkomende tips:

  • NOLOCK: Leest zonder vergrendelingen (kan niet-vastgelegde gegevens lezen).
  • FORCESEEK: Forceert index zoeken in plaats van scannen.
  • OPTIMIZE FOR: Geeft parameterwaarden weer voor het genereren van een plan.
  • RECOMPILE: Dwingt hercompilatie af voor elke uitvoering.

Voorzichtigheid: Overmatig gebruik van hints kan de prestaties verslechteren naarmate de data groeit of patronen veranderen. Gebruik ze alleen wanneer het plan van de optimizer aantoonbaar inefficiรซnt is.


32) Leg het concept van uitvoeringsplancaching in SQL Server uit.

SQL Server slaat uitvoeringsplannen op in de cache om hercompilatie voor terugkerende query's te voorkomen.

Wanneer dezelfde query nogmaals wordt uitgevoerd met dezelfde structuur, wordt het gecachte plan opnieuw gebruikt, waardoor de prestaties verbeteren.

Voorbeeld:

EXEC GetCustomerOrders @CustomerID = 101;

Voordelen:

  • Vermindert de CPU-overhead.
  • Verbetert de consistentie in reactietijd.

Problemen:

  • Parameter snuiven kan leiden tot inefficiรซnte plannen.
  • Een plancache-bloat kan geheugen verbruiken.

Beperking: Gebruik OPTION (RECOMPILE) or OPTIMIZE FOR UNKNOWN waarbij de parameters sterk variรซren.


33) Wat is parameter sniffing en welke invloed kan het hebben op de prestaties?

Parameter sniffing vindt plaats wanneer SQL Server parameterwaarden van de eerste uitvoering van een query gebruikt om een โ€‹โ€‹plan te genereren dat vervolgens opnieuw wordt gebruikt, zelfs als het niet optimaal is voor latere uitvoeringen.

Voorbeeldscenario:

  • Eerste uitvoering: kleine dataset โ†’ indexzoekplan.
  • Volgende uitvoering: grote dataset โ†’ hetzelfde plan hergebruikt, maar traag.

Oplossingen:

  1. Gebruik OPTION (RECOMPILE) om nieuwe plannen te maken.
  2. Gebruik lokale variabelen om parameterwaarden te maskeren.
  3. Gebruik OPTIMIZE FOR or OPTIMIZE FOR UNKNOWN.

Parameter sniffing is een van de grootste boosdoeners als het gaat om onvoorspelbare prestaties in T-SQL.


34) Hoe controleert en analyseert u de queryprestaties in SQL Server?

U kunt verschillende hulpmiddelen en DMV's gebruiken om de prestaties te profileren en af โ€‹โ€‹te stemmen:

  • Uitvoeringsplannen: Ctrl + M in SSMS of sys.dm_exec_query_plan.
  • DMV's:

    • sys.dm_exec_query_stats โ€“ CPU en duur.
    • sys.dm_exec_sql_text โ€“ SQL-tekst.
    • sys.dm_exec_requests โ€“ Actieve zoekopdrachten.
  • Prestatiemonitor en uitgebreide gebeurtenissen voor lange termijn trackoning.

Voorbeeld:

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) Leg uit welke rol statistieken spelen bij queryoptimalisatie.

Statistieken beschrijven de gegevensverdeling (bijvoorbeeld verschillende waarden, dichtheid, histogram) die de optimizer gebruikt om de kardinaliteit te schatten.

Als de statistieken verouderd zijn, kan SQL Server slechte plannen kiezen.

Belangrijkste opdrachten:

  • UPDATE STATISTICS Employees;
  • sp_updatestats;
  • Instelling voor automatisch updaten: standaard ingeschakeld.

Praktische tips:

  • Houden AUTO_UPDATE_STATISTICS ingeschakeld.
  • Voor grote tabellen moet u handmatige updates plannen.
  • Gebruik FULLSCAN voor kritieke indexen.

Verouderde statistieken zijn een stille prestatiemoordenaar.


36) Wat is het verschil tussen een indexzoekopdracht en een indexscan?

Werking Beschrijving Prestaties Use Case
Index zoeken Navigeert direct naar overeenkomende rijen Snel Zeer selectieve zoekopdrachten
Indexscan Leest alle indexvermeldingen sequentieel langzamer Zoekopdrachten met lage selectiviteit

Voorbeeld:

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

Optimalisatietip: Maak gefilterde of overkoepelende indexen om scans om te zetten in zoekopdrachten.


37) Leg uit wat gepartitioneerde tabellen zijn en wat hun voordelen zijn.

Partitionering verdeelt een grote tabel in kleinere, beheersbare stukken (partities), vaak op basis van een bereikkolom (zoals datum).

Voordelen:

  • Sneller gegevensbeheer (laden/ontladen per partitie).
  • Verbeterde queryprestaties op grote datasets.
  • Parallelle verwerking voor gepartitioneerde scans.

Voorbeeld:

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

Use case: Datawarehouses verwerken miljarden rijen waarin oude partities efficiรซnt kunnen worden gearchiveerd.


38) Wat zijn recursieve CTE's en welke beperkingen hebben ze?

A recursieve Common Table Expression (CTE) verwijst naar zichzelf, meestal naar hiรซrarchische gegevens zoals organigrammen of boomstructuren.

Voorbeeld:

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;

Beperkingen:

  • Standaard recursielimiet = 100 niveaus.
  • Kan prestatieproblemen veroorzaken als de recursiediepte hoog is.
  • Gebruik OPTION (MAXRECURSION n) om de limiet aan te passen.

39) Hoe gaat SQL Server intern om met fouten in transacties?

Wanneer er een fout optreedt binnen een transactie:

  • Als het is ernstig (niveau > 20), wordt de verbinding onmiddellijk verbroken.
  • If niet-ernstig, het kan worden gevangen met TRY...CATCH.

Voorbeeld:

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;

Beste oefening: Wikkel DML altijd in TRYโ€ฆCATCH voor foutbestendigheid.


40) Wat zijn enkele geavanceerde technieken voor het afstemmen van T-SQL-prestaties?

  1. Vermijd scalaire UDF's in SELECT โ€” inline-functies zijn sneller.
  2. Gebruik gefilterde indexen om de indexgrootte te verkleinen.
  3. Maak gebruik van in-memory OLTP (Hekaton) voor systemen met een hoge gelijktijdigheid.
  4. Batch-modusuitvoering op columnstore-indexen voor analyses.
  5. Impliciete conversies elimineren door het matchen van gegevenstypen.
  6. Gebruik query store om historische plannen te vergelijken.

Voorbeeld om impliciete conversies te detecteren:

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%';

Prestatie-afstemming is een continu proces, geen eenmalige gebeurtenis.


41) Hoe identificeert u de meest resource-intensieve query's in SQL Server?

U kunt dure query's identificeren met behulp van Dynamic Management Views (DMV's) die historische uitvoeringsstatistieken registreren.

Voorbeeld:

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;

Key Metrics:

  • AvgCPU: Gemiddelde CPU-tijd per uitvoering.
  • AvgReads: I/O-intensiteit.
  • AvgDuration: Uitvoeringslatentie.

Met deze aanpak kunnen DBA's zware query's isoleren voordat gebruikers ook maar een verslechtering van de prestaties opmerken.


42) Hoe kunt u ontbrekende indexen in SQL Server detecteren en herstellen?

SQL Server automatisch tracaanbevelingen voor ontbrekende indexgegevens via DMV's.

Voorbeeld:

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;

Praktische tips:

  • Geef prioriteit aan indexen met een hoge zoeksnelheid.
  • Controleer via uitvoeringsplannen voordat u ze maakt.
  • Vermijd overindexering: het vertraagt โ€‹โ€‹het schrijfproces.

43) Wat is het verschil tussen database mirroring, replicatie en log ship?ping?

Kenmerk Doel Real-time Failover Ingewikkeldheid
Mirroring Kopie van database met hoge beschikbaarheid Ja Automatisch Medium
kopiรซren Gegevensdistributie over databases Partieel Handleiding Hoge
Houtschipping Op back-up gebaseerde DR-strategie Nee Handleiding Laag

Gebruiksrichtlijnen:

  • Mirroring โ†’ OLTP-systemen met hoge beschikbaarheid.
  • Replicatie โ†’ Gedistribueerde rapportage.
  • Houtschipping โ†’ Rampenherstelconfiguraties.

44) Hoe los je blokkeringsproblemen op in SQL Server?

Blokkering treedt op wanneer รฉรฉn proces vergrendelingen vasthoudt die een ander proces nodig heeft.

Om blokkers te identificeren:

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;

Oplossingen:

  • Verkort de transactieduur.
  • Gebruik snapshot-isolatie.
  • Pas query's aan om vergrendeling te minimaliseren.
  • Identificeer langlopende openstaande transacties met DBCC OPENTRAN.

45) Hoe helpt de Query Store van SQL Server bij het optimaliseren van de prestaties?

Query Store legt querytekst, plannen en runtime-statistieken vast, waardoor plan regressieanalyse.

Hiermee kunt u zien wanneer een query plotseling traag wordt vanwege planwijzigingen.

Voorbeeld:

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;

Voordelen:

  • Vergelijk historische plannen.
  • Dwing goede plannen af.
  • Track prestatie trends in de loop van de tijd.

46) Hoe voorkom je SQL-injectie in T-SQL-applicaties?

Primaire verdedigingen:

  1. Gebruik geparametriseerde zoekopdrachten via sp_executesql.
  2. Valideer en reinig alle gebruikersinvoer.
  3. Vermijd dynamische SQL-samenvoeging.
  4. Dienst principe van de minste privileges voor databaseaccounts.

Veilig voorbeeld:

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

Ook al is SQL-injectie op applicatieniveau, DBA's moeten opgeslagen procedures en logs controleren voor niet-geparameteriseerde uitvoering.


47) Hoe gebruikt u Extended Events voor diepgaande prestatiebewaking?

Extended Events (XEvents) is een lichtgewicht framework voor prestatiebewaking โ€” een modern alternatief voor SQL. Trace.

Voorbeeld:

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;

Gebruik Gevallen:

  • Houd toezicht op intensieve CPU-query's.
  • Vang deadlocks of ontbrekende indexen op.
  • Maak een profiel van langlopende overzichten in productie met minimale overhead.

48) Wat zijn gefilterde indexen en wanneer moeten ze worden gebruikt?

Een gefilterde index indexeert alleen een subset van rijen die voldoen aan een filtervoorwaarde, waardoor de prestaties verbeteren en de opslagruimte wordt verkleind.

Voorbeeld:

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

Voordelen:

  • Kleinere indexgrootte.
  • Sneller onderhoud.
  • Geoptimaliseerd voor selectieve zoekopdrachten.

Beste voor: Kolommen met een scheve gegevensverdeling (bijvoorbeeld actieve versus inactieve records).


49) Hoe migreert u veilig gegevens tussen SQL Server-omgevingen?

Veilige datamigratie vereist planning voor consistentie, downtime en rollback.

Praktische tips:

  1. Gebruik transactionele replicatie or gegevensregistratie (CDC) wijzigen voor live synchronisatie.
  2. Beperkingen en triggers tijdelijk uitschakelen.
  3. Gebruik BCP or SSIS voor massale gegevensoverdracht.
  4. Valideer het aantal rijen en de controlesommen.
  5. Voer altijd integriteitscontroles uit na de migratie (DBCC CHECKDB).

Voorbeeld:

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

Het testen van migratiescripts in staging is niet-onderhandelbaar.


50) Hoe identificeert en lost u problemen met parametergevoelige query's (PSQ) op?

Parametergevoelige query's presteren inconsistent op basis van parameterwaarden โ€” een veelvoorkomend probleem in de praktijk.

Detectie: Gebruik QueryStore or sys.dm_exec_query_stats om meerdere plannen voor รฉรฉn query te identificeren.

Oplossingsstrategieรซn:

  1. Gebruik OPTIE (HERCOMPILEEREN) voor elke executie.
  2. Gebruik OPTIMALISEER VOOR HET ONBEKENDE om een โ€‹โ€‹generiek plan te maken.
  3. creรซren plangidsen om optimale uitvoeringspaden af โ€‹โ€‹te dwingen.
  4. Gebruik queryhints alleen als het nodig is.

Bij parametergevoelige kwesties is een evenwicht nodig tussen planstabiliteit en voorspelbare prestaties.

๐Ÿ” Top T-SQL-interviewvragen met realistische scenario's en strategische antwoorden

1) Wat is het verschil tussen INNER JOIN en LEFT JOIN in T-SQL?

Verwacht van kandidaat: De interviewer wil graag uw begrip van join-bewerkingen en de manier waarop gegevensrelaties worden beheerd in SQL-query's beoordelen.

Voorbeeld antwoord: An INNER JOIN retourneert alleen de rijen die overeenkomende waarden in beide tabellen hebben, terwijl een LEFT JOIN retourneert alle rijen uit de linkertabel, samen met de overeenkomende rijen uit de rechtertabel. Als er geen match is, worden NULL-waarden geretourneerd voor kolommen uit de rechtertabel. Dit onderscheid is cruciaal bij het werken met gedeeltelijke of optionele relaties in databases.


2) Hoe identificeert en verwijdert u dubbele records uit een tabel in T-SQL?

Verwacht van kandidaat: De interviewer wil graag zien of u in staat bent om vensterfuncties en CTE's te gebruiken om problemen met de gegevenskwaliteit aan te pakken.

Voorbeeld antwoord: Ik zou een Common Table Expression (CTE) gebruiken in combinatie met de ROW_NUMBER() Functie om duplicaten te identificeren. Bijvoorbeeld:

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

Met deze aanpak worden duplicaten verwijderd, terwijl er voor elke groep รฉรฉn uniek record behouden blijft.


3) Kunt u uitleggen wat een CTE (Common Table Expression) is en wanneer u deze zou gebruiken?

Verwacht van kandidaat: De interviewer toetst uw kennis van querystructurering en tijdelijke resultaatsets.

Voorbeeld antwoord: Een CTE is een tijdelijke resultaatset die gedefinieerd is binnen de uitvoeringsscope van een enkele query. Het is nuttig om complexe joins en subquery's te vereenvoudigen, de leesbaarheid te verbeteren en recursieve query's mogelijk te maken. In mijn vorige functie gebruikte ik CTE's regelmatig om meerstaps aggregatielogica op te splitsen in beter onderhoudbare componenten.


4) Hoe gaat u om met prestatie-afstemming in T-SQL-query's?

Verwacht van kandidaat: De interviewer wil uw ervaring met query-optimalisatie en prestatieprobleemoplossing evalueren.

Voorbeeld antwoord: Ik begin met het onderzoeken van het uitvoeringsplan om trage bewerkingen zoals tabelscans of dure joins te identificeren. Vervolgens controleer ik op ontbrekende indexen, redundante subquery's of inefficiรซnte joins. Ik analyseer ook statistieken en gebruik indexeringsstrategieรซn, zoals het afdekken van indexen of gefilterde indexen, om de prestaties te verbeteren. Ten slotte controleer ik de querylogica om er zeker van te zijn dat deze gebruikmaakt van set-gebaseerde bewerkingen in plaats van rij-voor-rij-verwerking.


5) Beschrijf een situatie waarin je een traag draaiende query in productie moest debuggen. Welke stappen heb je genomen?

Verwacht van kandidaat: Met deze gedragsvraag worden uw probleemoplossende vaardigheden en communicatieve vaardigheden in de echte wereld beoordeeld.

Voorbeeld antwoord: In een eerdere functie duurde het uitvoeren van een rapportquery meer dan 20 minuten. Ik analyseerde het uitvoeringsplan en ontdekte dat een van de joins een index op een externe sleutelkolom miste. Nadat ik de index had aangemaakt en de statistieken had bijgewerkt, daalde de query-runtime tot minder dan 30 seconden. Ik heb de oplossing ook gedocumenteerd en met het team gedeeld om soortgelijke problemen in de toekomst te voorkomen.


6) Wat zijn tijdelijke tabellen en tabelvariabelen en wat is het verschil?

Verwacht van kandidaat: De interviewer test uw kennis van de opties voor tijdelijke gegevensopslag in T-SQL.

Voorbeeld antwoord: Tijdelijke tabellen (#TempTable) worden aangemaakt in de tempdb-database en ondersteunen indexen, beperkingen en statistieken. Tabelvariabelen (@TableVar) worden in het geheugen opgeslagen en hebben beperkte statistische ondersteuning, waardoor ze geschikt zijn voor kleinere datasets. Tijdelijke tabellen zijn beter voor grote of complexe datasets, terwijl tabelvariabelen efficiรซnter zijn voor kleine, kortstondige data.


7) Hoe zou u foutverwerking en transacties in T-SQL aanpakken?

Verwacht van kandidaat: De interviewer toetst uw begrip van transactionele integriteit en uitzonderingsafhandeling.

Voorbeeld antwoord: ik gebruik BEGIN TRANSACTION, COMMITen ROLLBACK verklaringen om de consistentie van de gegevens te garanderen. Ik voeg ook toe TRY...CATCH blokken om fouten netjes af te handelen. Bijvoorbeeld:

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

Deze aanpak voorkomt dat gegevens gedeeltelijk worden bijgewerkt als er fouten optreden.


8) Hoe gebruik je vensterfuncties in T-SQL, en kun je een voorbeeld geven?

Verwacht van kandidaat: De interviewer wil uw vaardigheden in het stellen van geavanceerde analytische vragen beoordelen.

Voorbeeld antwoord: Vensterfuncties maken berekeningen mogelijk in sets van rijen die gerelateerd zijn aan de huidige rij, zonder dat gegevens worden samengevoegd. Bijvoorbeeld:

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

Hiermee worden rangnummers aan werknemers toegekend op basis van salaris, waardoor prestatietrends eenvoudig kunnen worden geanalyseerd.


9) Vertel eens over een complex T-SQL-project waaraan je hebt gewerkt en hoe je de uitdagingen ervan hebt aangepakt.

Verwacht van kandidaat: De interviewer is op zoek naar diepgaande ervaring, probleemoplossend vermogen en teamwerk.

Voorbeeld antwoord: In mijn laatste functie bouwde ik een ETL-pipeline voor datawarehouses met behulp van T-SQL-opslagprocedures. De uitdaging was om grote hoeveelheden data efficiรซnt te verwerken. Ik optimaliseerde query's met gepartitioneerde tabellen, incrementele belasting en batchverwerking. Ik werkte ook samen met het BI-team om consistente schemaontwerpen te garanderen en de rapportagesnelheid met meer dan 40% te verbeteren.


10) Hoe zou u omgaan met een situatie waarbij een door u geschreven opgeslagen procedure een patstelling in de productie veroorzaakt?

Verwacht van kandidaat: De interviewer test uw crisismanagement en technische kennis.

Voorbeeld antwoord: Ik zou eerst de deadlock identificeren met behulp van SQL Server's sys.dm_tran_locks en deadlockgrafieken. Vervolgens analyseerde ik de volgorde van resourcetoegang en herstructureerde ik de procedure om locks in een consistente volgorde te verkrijgen. In mijn vorige baan implementeerde ik ook retry-logica voor de betrokken transacties en plande ik regelmatige monitoring om vergelijkbare patronen vroegtijdig te detecteren.

Vat dit bericht samen met: