Posts

Dobry DBA nie zgaduje – obserwuje

2025-10-17 · 3 min

Każdy wykres to historia.
CPU, I/O, pamięć, zapytania – wszystkie mówią, co naprawdę dzieje się na serwerze.
Dobry DBA nie reaguje na alarm, tylko rozumie, dlaczego on się pojawił.

Mój ulubiony zestaw: Telegraf + InfluxDB + Grafana.
Z tego powstaje cockpit — SQLManiak Monitoring.
Nie dashboard „bo ładny”, tylko mapa świadomości systemu, w której każda metryka ma znaczenie.

„Wiedza zaczyna się tam, gdzie kończą się zgadywania.”


Od reakcji do obserwacji

Większość problemów z wydajnością nie pojawia się nagle.
One dojrzewają. Rosną cicho, pomiędzy kolejnymi BACKUP, CHECKDB, i zbyt długim SELECT *.
Bez monitoringu widzimy tylko skutek – czerwony alert, rosnące czasy odpowiedzi, spadek PLE.

Ghost Records – duchy w bazie danych

2025-10-16 · 3 min

W bazie danych straszy.
Nie w horrorze, ale w DMV: sys.dm_db_index_physical_stats.
Gdy kasujesz wiersz, SQL Server nie usuwa go od razu — zostawia ducha (ghost record), który czeka, aż ghost cleanup task wykona egzorcyzm.

To dzięki temu ROLLBACK może przywrócić dane, a DELETE nie musi blokować świata.
System woli oznaczyć rekord jako „martwy”, niż ryzykować chaos w strukturze stron danych.

„To, czego nie widzisz, nie znaczy, że tego nie ma — zwłaszcza w bazie danych.”

DELETE vs TRUNCATE – kiedy SQL Server naprawdę sprząta

2025-10-15 · 2 min

Oba polecenia usuwają dane. Ale jedno robi to z manierą, drugie z miotłą.
DELETE i TRUNCATE wyglądają podobnie — efekt końcowy to pusta tabela.
Pod maską SQL Server jednak wykonuje zupełnie inne operacje.

DELETE – chirurg z lupą

DELETE działa wiersz po wierszu. Każdy usunięty rekord jest logowany w transakcyjnym logu (transaction log), dzięki czemu można cofnąć operację (ROLLBACK).
To daje precyzję — można użyć WHERE, aktywują się TRIGGERY, a relacje z kluczami obcymi są respektowane.
Ale cena jest jasna: log rośnie, a wydajność spada proporcjonalnie do liczby usuwanych wierszy.

Co widzi Query Processor zanim Ty klikniesz Execute?

2025-10-14 · 3 min

Kiedy wpisujesz SELECT i wciskasz „Execute”, zaczyna się coś magicznego. Ale nie w takiej kolejności, jak myślisz.

SQL Server nie jest naiwnym tłumaczem Twojego kodu – to kompilator logiki zapytań, który widzi świat zupełnie inaczej. Zanim linijka SELECT dotrze do procesora zapytań, tekst T-SQL zostaje zanalizowany, przepisany, znormalizowany i zoptymalizowany. Efektem nie jest „wykonanie kodu”, ale plan zapytania – precyzyjna instrukcja dla silnika relacyjnego, jak dobrać dane możliwie najtaniej.

I właśnie tu pojawia się pierwszy paradoks: SQL Server wcale nie zaczyna od SELECT.
Najpierw patrzy na FROMustala źródła danych, sprawdza połączenia (JOIN), a następnie przechodzi przez kolejne etapy:

Dwadzieścia lat w drodze: o nauczaniu, ciekawości i przyszłości technologii

2025-10-13 · 2 min


Dwadzieścia lat temu, w czasach, gdy świat IT pachniał świeżością Windows Server 2003, a SQL Server 2000 dopiero uczył nas, czym naprawdę jest baza danych, dostałem e-mail z tytułem, który miał odmienić mój zawodowy los:
“Congratulations, you are now a Microsoft Certified Trainer.”

Nie przypuszczałem, że to zaproszenie do jednej z najdłuższych i najpiękniejszych podróży mojego życia.
Wtedy byłem po prostu młodym pasjonatem technologii, który uwielbiał rozumieć jak to działa.
Dziś wiem, że to zdanie wciąż najlepiej mnie opisuje.

Backup VLDB > 4TB: jak dzielić na wiele plików i sprawnie odtwarzać

2025-10-04 · 1 min

Praktyczna strategia backupu/restore dla bardzo dużych baz: striped backup, kompresja, MAXTRANSFERSIZE, BUFFERCOUT.

Dlaczego plik log nie maleje po SHRINK i co z tym zrobić

2025-10-04 · 2 min

Masz wrażenie, że SHRINKFILE na pliku log nic nie daje? Tu jest kompletna mapa pułapek: VLF, otwarte transakcje, brak backupów logu i nieuśpione replikacje.

EF Core 9: relacja wiele‑do‑wielu z dodatkowymi polami (Razor Pages)

2025-10-04 · 1 min

Prosty przykład many‑to‑many z tabelą łącznikową, która ma własne kolumny (Grade, EnrolledDate) i walidację po stronie UI.

FCI vs Always On AG: co wybrać i jak myśleć o RTO/RPO

2025-10-04 · 1 min

Porównanie w praktyce: kiedy FCI, kiedy AG, i jak policzyć RTO/RPO bez zgadywania. Proste scenariusze decyzyjne.

IIS + Windows: szybki monitoring w Grafanie (Telegraf + InfluxDB)

2025-10-04 · 1 min

Zbieramy metryki IIS (requests/sec, queue length, HTTP 500) i logi z access.log do InfluxDB 2.x z użyciem Telegrafa.