Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

MS SQL Server stojící, bdící

Podobné prezentace


Prezentace na téma: "MS SQL Server stojící, bdící"— Transkript prezentace:

1 MS SQL Server stojící, bdící
Miloslav Peterka, BI Experts, s.r.o. MCSE: Data Platform | Business Intelligence | Data Management and Analytics

2 Osnova Úvod do problematiky SQLOS a zpracování úloh v SQL Serveru
Katalogové pohledy Běžné prostoje IO CPU Ostatní Závěrem

3 Úvod do problematiky MS SQL Server Database Engine
Serverová služba Řeší požadavky (úlohy) klientů (aplikací) Typicky velké množství současně Řešená úloha zatěžuje CPU Současně zpracovávané požadavky soupeří o omezené zdroje Pokud úloze chybí potřebné zdroje, požadavek čeká na zpracování Projevuje se jako výkonnostní problém SQL Server zaznamenává informace o délce čekání a jeho příčinách

4 SQLOS a zpracování úloh v SQL Serveru
Session Vytvářená pro autentizované připojení Identifikovaná unikátním session_id (SPID) Request Požadavek zaslaný v rámci session aplikací (uživatelem) Scheduler Rozděluje práci CPU (jeden scheduler na jedno CPU) Pracuje kooperativně Probíhající úloha dobrovolně uvolní CPU ostatním

5 SQLOS a zpracování úloh v SQL Serveru
Worker Thread svázaný s daným schedulerem Vykonává jednu úlohu (task) CPU time využitý workerem omezen Na dobu, dokud není požadován nedostupný zdroj nebo Dokud není vyčerpáno quantum Pak se worker dobrovolně vzdá CPU ve prospěch jiné úlohy Pokud worker nepracuje a čeká na na dostupnost zdroje, vzniká prostoj - wait

6 SQLOS a zpracování úloh v SQL Serveru
Running SPID 60 Running Running SPID 60 IO_COMPLETION Running SPID 51 Running Waiting tasks (Resource Waits) SPID 73 LCK_M_S SPID 59 NETWORKIO SPID 55 LOGMGR SPID 60 IO_COMPLETION Waiting tasks (Resource Waits) SPID 73 LCK_M_S SPID 59 NETWORKIO SPID 56 CXPACKET SPID 55 LOGMGR SPID 60 IO_COMPLETION Runnable queue (Signal Wait) SPID 51 Runnable SPID 64 Runnable SPID 87 Runnable SPID 52 Runnable SPID 93 Runnable SPID 56 Runnable

7 Katalogové pohledy s informacemi o „waitech“
sys.dm_os_waiting_tasks Pohled na čekající úlohy Vhodný pro zkoumání aktuálních výkonnostních potíží sys.dm_os_wait_stats Obsahuje celkové kumulované časy prostojů vlastní prostoj plus signal wait time Vyprázdněn restartem služby nebo smazáním statistik (DBCC SQLPERF)

8 Demo SQLOS objekty Katalogové pohledy

9 Co je dobré vědět Bez prostojů to nejde Řada prostojů se dá ignorovat
Samotné vyhodnocení prostojů nestačí Třeba korelovat s jinými informacemi Performance monitor Katalogové pohledy SQL Serveru Statistiky indexů, virtuálních souborů, latch, spinlocks, … Je vhodné vytvořit baseline, ke které lze vztahovat následná měření Existující nástroje mohou výrazně pomoci

10 Běžné prostoje - IO PAGEIOLATCH_XX
Nastává, pokud úloha požaduje datovou stránku, která není v paměti Je alokována stránka v paměťovém bufferu, na které se drží latch, dokud není stránka načtena z disku SH pro čtení, EX pro zápis Možné příčiny Špatné dotazy (často s vysokým CXPACKET díky paralelním skenům) Nedostatek paměti Nedostatečná propustnost IO subsystému Vhodné korelovat s sys.dm_io_virtual_file_stats a čítači objektu PhysicalDisk

11 Běžné prostoje - IO WRITELOG
SQL Server zapisuje při potvrzení transakce log záznamy z paměti na disk WRITELOG reprezentuje čekání na zápis dat do transakčního logu Operace synchronní s potvrzením transakce Typicky vzniká při uložení transakčních logů z více intenzivně využívaných databází na jednom disku Zbytečné zápisy generuje například Údržba nevyužitých neklastrovaných indexů Nadměrný rebuild indexů Konstantní dělení stránek

12 Běžné prostoje - IO IO_COMPLETION a ASYNC_IO_COMPLETION
Prostoj generován synchronními IO operacemi, které nepracují s tabulkami (buffer poolem), například: Čtení logu při zotavení Čtení alokačních bitmap Zápis mezivýsledků třídění, merge joinů Checkpoint na začátku zálohování Čtení ze zálohy během zálohování

13 Běžné prostoje - CPU CXPACKET
Vzniká při synchronizaci paralelních exekučních plánů Často představuje důsledek, nikoli příčinu Snížení možné Zvýšením prahu pro paralelní plány Snížením míry paralelismu Odstraněním skutečné příčiny blokující paralelní úlohu (IO, statistiky, …) Nový CXCONSUMER odlišuje nepodstatné Paralelismus problémem, pokud s CXPACKED dominují LATCH_EX (ACCESS_METHODS_DATASET_PARENT) SOS_SCHEDULER_YIELD

14 Běžné prostoje - CPU SOS_SCHEDULER_YIELD
Vzniká v důsledku kooperativního multitaskingu v SQLOS Task, který vyčerpá quantum, generuje SOS_SCHEDULER_YIELD Často indikátor rozsáhlých skenů Pokud se nevyskytuje současně s prostoji PAGEIOLATCH_*, ukazuje na nedostatečný výpočetní výkon Úzké hrdlo na straně CPU se dále typicky projevuje Velkým počtem úloh v runnable frontě Vysokým podílem signal_wait_time

15 Běžné prostoje - ostatní
LCK_M_XX Čekání na uvalení zámku typu XX LATCH_XX Čekání na uvalení latche mimo buffer pool, detaily v sys.dm_os_latch_stats BACKUPIO Prostoj při čtení a zápisu z/do záložního souboru ASYNC_NETWORK_IO SQL Server čeká na zpracování dat na straně klienta

16 Závěrem Analýza prostojů je dobrým výchozím bodem k detekci příčin výkonnostních problémů Pro potvrzení podezření je třeba korelovat s dalšími informacemi Ne vše ale měří Propustnost RAM

17 Děkuji za pozornost Miloslav Peterka, BI Experts, s.r.o.
MCSE: Data Platform | Business Intelligence | Data Management and Analytics


Stáhnout ppt "MS SQL Server stojící, bdící"

Podobné prezentace


Reklamy Google