SQL Server
Indecși, partiții, planuri de execuție și realitatea de zi cu zi a T-SQL pe tabele mari.
-
Lecția 1
Ce este de fapt SQL Server și de ce ar trebui să-ți pese
SQL Server pe înțelesul tuturor: ce este produsul, edițiile, capcanele de licențiere și pe care s-o instalezi pe laptop astăzi.
-
Lecția 2
Instalarea SQL Server și conectarea cu SSMS
Developer Edition pe Windows, Docker pe Mac sau Linux și cum alegi între SSMS și Azure Data Studio. Setup-ul de 20 de minute pe care-l vei folosi tot restul cursului.
-
Lecția 3
Baze de date, scheme, tabele: păpușile rusești
Spațiul de nume pe trei niveluri pe care SQL Server îl folosește ca să organizeze totul, la ce e bun fiecare nivel și de ce dbo nu e chiar prietenul tău.
-
Lecția 4
Tipuri de date: diferența dintre VARCHAR(50) și un proces în instanță
VARCHAR vs NVARCHAR, DATETIME vs DATETIME2, DECIMAL vs FLOAT și consecințele surprinzător de scumpe ale neglijenței cu tipurile de date în SQL Server.
-
Lecția 5
CREATE, ALTER, DROP: facerea și desfacerea tabelelor
Bazele DDL, pattern-uri IF EXISTS, scripturi idempotente și exercițiul „o, nu, am dat drop la prod”. Plus cum schimbi o coloană fără să strici aplicația.
-
Lecția 6
SELECT: cum pui întrebări fără să plângi
Proiecție, alias-uri, secretul ordinii logice de execuție pe care nimeni nu-l spune începătorilor și de ce SELECT * miroase a neprofesionalism. Construit pe datele de comenzi ale Runehold.
-
Lecția 7
WHERE, NULL și de ce filtrele te mint
Logica trivalentă, IS NULL vs = NULL, ISNULL vs COALESCE și bug-ul tăcut pe care fiecare dezvoltator îl scrie odată. Cu exemple din suportul clienți Runehold.
-
Lecția 8
ORDER BY, TOP și OFFSET/FETCH
Sortare, paginare, TIES, sortări stabile și singurul lucru pe care toată lumea îl greșește când încearcă prima dată să obțină primele N rânduri pe grup.
-
Lecția 9
JOIN-uri: singura diagramă de care ai nevoie
INNER, LEFT, RIGHT, FULL, CROSS. Erezia diagramelor Venn. Semi-JOIN-uri, anti-JOIN-uri și diferența dintre un predicat de JOIN și un filtru WHERE.
-
Lecția 10
GROUP BY, HAVING și agregatele
SUM, COUNT, AVG, agregate cu DISTINCT, HAVING vs WHERE și scrierea interogărilor de KPI pe care le rulează chiar fiecare business. Venit, AOV, CAC, LTV explicate în SQL.
-
Lecția 11
Subquery vs CTE: când folosești fiecare
Subquery-uri inline, tabele derivate, subquery-uri corelate și CTE-uri. Regula lizibilității, mitul „este același plan?” și cum refactorizezi un query monstruos.
-
Lecția 12
Funcții de fereastră: ROW_NUMBER, LAG, LEAD, SUM OVER
Caracteristica SQL care transformă self-join-urile și subquery-urile corelate în one-liner-e. Ranking, totaluri cumulative, delta de la o perioadă la alta și clauza OVER explicată.
-
Lecția 13
UNION vs UNION ALL
De ce UNION ALL este mai rapid și de ce oamenii încă scriu UNION din greșeală. Plus INTERSECT, EXCEPT și combinarea corectă a seturilor de rezultate.
-
Lecția 14
Funcții de string: STRING_AGG, STRING_SPLIT, TRIM
Manipulare modernă a stringurilor în T-SQL. Concatenare, splitting, pattern matching, trimming, plus moartea funcțiilor CLR pentru lucrul cu stringuri.
-
Lecția 15
Date și ore: mlaștina fusurilor orare
DATETIMEOFFSET, AT TIME ZONE, capcanele lui DATEDIFF, stocare în UTC vs local și oroarea specifică UE a orei de vară. De ce Runehold marchează fiecare timestamp.
-
Lecția 16
Common Table Expressions pe bune: CTE-uri recursive
Organigrame, arbori de foldere, liste de materiale și generatorul de dimensiuni de date dintr-o singură expresie. Cum să gândești CTE-uri recursive fără să te pierzi.
-
Lecția 17
INSERT, UPDATE, DELETE și de ce MERGE e periculos
Cele patru verbe DML, pattern-urile UPSERT care chiar funcționează, clauza OUTPUT și lista lungă de motive pentru a evita MERGE.
-
Lecția 18
Tranzacții și proprietățile ACID
Ce înseamnă cu adevărat atomic, consistent, izolat și durabil. BEGIN TRAN, COMMIT, ROLLBACK, SAVEPOINT și pattern-urile de error handling care țin datele oneste.
-
Lecția 19
Nivelurile de izolare, demistificate
READ COMMITTED, SNAPSHOT, SERIALIZABLE și cele patru anomalii pe care le previn. De ce setarea implicită a SQL Server te poate mușca și de ce RCSI e setarea pe care majoritatea magazinelor din UE ar trebui să o pornească.
-
Lecția 20
Blocări, blocaje, deadlock-uri: triunghiul zilnic
Blocări shared, exclusive și update. Cum găsești cine blochează pe cine cu sp_who2 și DMV-uri. Cum citești graphurile de deadlock. Pattern-ul de retry de care are nevoie fiecare aplicație de producție.
-
Lecția 22
Indici acoperitori și coloane incluse
Taxa pentru key lookup, INCLUDE vs coloane cheie, când să faci un indice acoperitor și cum găsești candidați de indici din DMV-urile pentru missing indexes.
-
Lecția 23
Indici filtrați și columnstore: eroii de nișă
Când rowstore nu e suficient. Indici filtrați pentru soft-delete și date sparse. Columnstore pentru query-uri de warehouse. Cum alegi și când.
-
Lecția 24
Fragmentare, rebuilds, reorgs: mitul celor 30%
Ce a spus de fapt Paul Randal, de ce planul implicit de mentenanță e greșit pe SSD-uri și cum construiești o strategie sensibilă de mentenanță în 2026.
-
Lecția 25
Cum citești un plan de execuție fără să plângi
Cum decide SQL Server să-ți ruleze query-ul, cum citești planul pe care ți-l arată și cei trei operatori care explică 90% din query-urile lente.
-
Lecția 26
Statistici și estimare de cardinalitate
Cum ghicește optimizatorul, când ghicește greșit, cardinality estimator-ul legacy vs cel modern și DMV-urile care îți spun adevărul despre stats-urile tale.
-
Lecția 27
Parameter sniffing: bug-ul, feature-ul, fix-ul
De ce e query-ul rapid în SSMS și lent în aplicație. OPTIMIZE FOR, RECOMPILE, plan forcing prin Query Store și feature-urile recente SQL Server care fac asta mai puțin dureros.
-
Lecția 28
Plan cache și Query Store: mașina ta a timpului
Diferența dintre plan cache și Query Store. Cum găsești query-ul care a regresat marțea trecută. Forțarea planurilor fără modificări de cod.
-
Lecția 29
Cum funcționează de fapt partiționarea în SQL Server
Un ghid practic prin partition functions, partition schemes, pattern-ul sliding window și capcanele despre care nimeni nu te avertizează până nu îți ia foc job-ul de noapte.
-
Lecția 30
Filegroups, fișiere de date și ce face de fapt fișierul de log
MDF, NDF, LDF, dezastre de autogrowth, VLF-uri și de ce FULL recovery fără log backups e o bombă cu ceas. Layout-ul de stocare pe care fiecare DBA ar trebui să-l știe.
-
Lecția 31
Backup-uri: FULL, DIFF, LOG și restore drill-ul
Cele trei tipuri de backup, point-in-time recovery, cum testezi un backup pe care nu l-ai testat niciodată și orarul pe care ar trebui să-l aibă orice sistem OLTP.
-
Lecția 32
SQL Agent jobs fără lacrimi
Programare, alerte, email-uri către operatori și pattern-ul «job-ul meu eșuează în tăcere». Echivalentul Azure SQL prin Elastic Jobs. Construirea unei mentenanțe care chiar rulează.
-
Lecția 33
Bazele de securitate: autentificări, utilizatori, roluri
Principali, scheme, capcana rolului public, principiul privilegiului minim. Plus note specifice GDPR pentru o firmă din UE.
-
Lecția 34
tempdb: singura resursă partajată care omoară totul
Numărul de fișiere, autogrowth, TF 1118, metadate tempdb optimizate pentru memorie. De ce tempdb e vecinul tuturor și cum să-i oprești să se certe.
-
Lecția 35
Planuri de mentenanță vs Ola Hallengren
De ce orice firmă ajunge să arunce GUI-ul Maintenance Plan și să ruleze în loc scripturile gratuite ale lui Ola. Instalarea exactă plus configurația pentru un program săptămânal sensibil.
-
Lecția 36
DMV-uri pe care fiecare DBA ar trebui să le știe pe de rost
Cele opt interogări pe care le rulezi pe un server rece. Wait stats, blocaje, top CPU, top I/O, buffer pool, indecși lipsă, indecși nefolosiți, prezentare generală a sistemului.
-
Lecția 37
First Responder Kit: cadoul lui Brent Ozar pentru omenire
Ce este kit-ul, de ce e licențiat MIT și gratuit pentru totdeauna, cum se instalează pe fiecare SQL Server pe care îl ai și cum arată uneltele dinăuntru.
-
Lecția 38
sp_BlitzIndex și sp_BlitzCache: scanarea full-body
Audit profund de indecși cu sp_BlitzIndex. Revizuirea planurilor de query cu sp_BlitzCache. Citirea output-ului, triajul celor 50 de lucruri pe care le găsesc.
-
Lecția 39
sp_BlitzCache și sp_WhoIsActive: ce se întâmplă CHIAR ACUM
sp_WhoIsActive de la Adam Machanic e procedura de răspuns la urgențe. Plus sp_BlitzFirst pentru wait stats la momentul de față.
-
Lecția 40
Un health check SQL Server de 30 de minute: scriptul pe care chiar îl rulezi
Checklist-ul ordonat pe care îl rulez pe orice SQL Server pe care nu l-am mai văzut. Imprimabil, lipibil și lecția de încheiere a cursului.