Plán a čakania – WaitStats a QueryTimeStats v skutočnom pláne
Čakania priamo v exekučnom pláne: WaitStats a QueryTimeStats (CPU vs. elapsed) na SELECT, ktoré čakania ukazujú na plán (PAGEIOLATCH, RESOURCE_SEMAPHORE, CXPACKET) a ktoré nie.
Čerstvo pražené T-SQL skripty a DBA múdrosti – ku každému receptu aj návod, ako ho čítať. Nevieš, čo si dať? Začni Prvou pomocou DBA.
98 receptov · 56 tagov
Čakania priamo v exekučnom pláne: WaitStats a QueryTimeStats (CPU vs. elapsed) na SELECT, ktoré čakania ukazujú na plán (PAGEIOLATCH, RESOURCE_SEMAPHORE, CXPACKET) a ktoré nie.
Načíta SQL Server alebo SQL Agent error log (aktuálny aj staršie), voliteľne filtruje text a skryje bežný šum (úspešné zálohy, CHECKDB bez chýb, prihlásenia). Plus prehľad čísel chýb.
Minútové vzorky vyťaženia CPU za posledných ~256 minút: koľko berie SQL Server, koľko ostatné procesy a koľko je voľné. Bez agenta a bez monitoringu.
Dva odbery sys.dm_os_wait_stats s pauzou medzi nimi: na čo server čaká práve teraz, nie od posledného reštartu. S podielom, priemerným čakaním a signal vs. resource.
Mesačná veľkosť FULL záloh každej databázy z msdb a priemerný rast v MB za mesiac – podklad na plánovanie disku bez monitoringu.
Jeden prehľad „kontrola → stav → odporúčanie“: sa, sysadmin, rizikové sp_configure voľby, TRUSTWORTHY, vlastníci databáz, password policy, prázdne heslá, guest a GRANT pre public.
Všetky certifikáty v master aj v používateľských databázach s dátumom expirácie a poslednej zálohy privátneho kľúča, plus stav TDE šifrovania a ktorým certifikátom je chránené.
Všetky joby s čitateľným harmonogramom („týždenne: po, pi o 02:00:00“), najbližším spustením, vlastníkom, notifikáciou operátora pri zlyhaní a výsledkom posledného behu.
Všetky linked servery s providerom, cieľom, katalógom a voľbami RPC / data access, plus mapovanie loginov: kto sa na druhý server hlási vlastným účtom a kto pod spoločným SQL loginom.
Koľko miesta v tempdb zaberá version store (RCSI, snapshot, online index rebuild, triggre), ktorá databáza ho generuje a ktorá najstaršia snapshot transakcia bráni jeho čisteniu. Na 2019+ aj ADR persistent version store.
Postup pri hlásení „SQL Server je pomalý“: over rozsah, pozri aktívne requesty a blokovanie, zmeraj wait stats za posledných 30 s, CPU SQL vs. OS, memory grants, I/O latenciu a tempdb. Plus čo počas incidentu nerobiť.
Ako obnoviť databázu k presnému času pred chybou (zmazané dáta, zlý UPDATE): predpoklady, tail-log backup, nájdenie záloh, obnova pod iným menom, STOPAT, NORECOVERY vs. RECOVERY, STANDBY a presun dát späť. Poznámky k TDE a Always On.
Kontrolný zoznam presunu databázy na nový SQL Server: inventár pred migráciou (loginy so SID, joby, linked servery, certifikáty / TDE, konfigurácia), výber metódy, cutover krok za krokom a kontroly po migrácii.
Ako často sa každý index v databáze číta (seek, scan, lookup) a koľkokrát sa udržiava pri zápisoch.
Top session podľa obsadenia tempdb – user objekty (#temp, table variables) aj internal objekty (sort, hash, spill), vrátane práve bežiacich taskov.
Statementy z plan cache s najvyšším priemerným trvaním, s CPU a čítaniami na jedno vykonanie.
Priemerná latencia čítania a zápisu pre každý MDF / NDF / LDF súbor od štartu inštancie.
Najdrahšie dotazy podľa CPU za posledných N hodín z Query Store – aj tie, ktoré už vypadli z plan cache.
Dotazy, ktorým za posledných 24 hodín narástlo vážené priemerné trvanie oproti predchádzajúcim 24 hodinám.
Všetky explicitne pridelené a odobraté práva v aktuálnej databáze – na úrovni databázy, schémy, objektu aj stĺpca.
Requesty, ktoré majú alebo čakajú na query memory grant (sort, hash): žiadaná, pridelená a reálne použitá pamäť.
Deadlock grafy zo súborov .xel relácie system_health – siahajú ďalej do minulosti než ring_buffer. Cestu k súborom zistí skript sám.
Práve čakajúce tasky používateľských session s typom čakania, trvaním, blockerom a resource_description.
Aktuálne requesty nad zvolený čas: trvanie, CPU, čítania, čakanie, blocker a presný práve vykonávaný statement.
Session s otvorenou transakciou: vek transakcie, typ, stav, koľko logu zaberá a posledný príkaz. Na rastúci log a „zabudnutý“ COMMIT.