sql >> Databáze >  >> RDS >> Sqlserver

Metriky výkonu serveru SQL, abyste zůstali před hrou

"Pane doktore, obávám se o výkon svého serveru SQL."

Nebylo to něco, co slyšíte od většiny pacientů. Ale jako placený profesionál jsem byl vyškolen, abych se s tím vším vypořádal – dokonce i s těžkými časy administrátora databáze.

"Opravdu? Pojďme to prozkoumat, ano?“

"Jistě, doktore." Chci říct, někdy mi to přijde tak ohromující. Myslel jsem, že všechno půjde samo od sebe, jakmile se k tomu zavážem. Ale než jsem si to uvědomil, začal jsem mít problémy s výkonem v SQL Server 2012, pak 2014, pak 2017. Na SQL Server 2019 nechci ani pomyslet.“

"Chápu. Dobrý vztah s SQL Serverem nevzniká jen tak sám od sebe. Musíte na tom pracovat. Řekněte mi, pracovali jste na technikách ladění výkonu serveru SQL?“

"Ehm, ne, doktore." Ve skutečnosti žádnou z těchto technik neznám.“

"Neboj se. Můžeme na nich pracovat. Váš SQL Server se pravděpodobně cítí zanedbaný. Musíte na to dávat pozor, abyste měli jistotu, že budete mít náskok před hrou. To vyžaduje monitorování serveru SQL.“

„Monitorování? Jak to děláte?“

„Musíte SQL Serveru ukázat, že vám na tom záleží. Musíte věnovat pozornost určitým metrikám. I na tom můžeme zapracovat.“

"Dobře, doktore." Cokoliv řekneš. V tuto chvíli jsem ochoten zkusit cokoliv. Věci nemohou být o moc horší, než jsou teď.“

"Dobrá tedy. Pojďme začít."

Metriky výkonu serveru SQL Server – spousta pohyblivých částí

Pacient měl pravdu:sledování výkonu vašeho SQL serveru může být ohromující. Jakmile je v provozu, nemůžete tomu přestat věnovat pozornost. Musíte i nadále ukazovat, že vám na tom záleží.

SQL Server má spoustu pohyblivých částí, které neustále generují metriky. Vědět, které z nich sledovat, a pak si ve svém rušném dni věnovat čas na jejich sledování může být pro DBA hodně práce.

Prošel jsem tedy s pacientem některé z hlavních oblastí metrik výkonu SQL Serveru.

Indexy

Jedním z prvních míst, kam se podívat, když máte problémy s výkonem se serverem SQL, jsou indexy. Vaše data neustále rostou, takže vaše indexy také neustále rostou. Podléhají však podmínkám, jako je fragmentace a rozdělení stránek, které mohou zpomalit odpověď na dotazy.

Co se den co den děje v databázi? Uživatelé vytvářejí, upravují a mažou záznamy. Indexy drží krok s tím, kde jsou všechny části záznamů, ale postupem času fragmentace indexu brzdí výkon.

Pak je tu faktor plnění indexu, parametr, který můžete nakonfigurovat na serveru SQL Server pro řízení počtu rozdělení stránek a zvýšení efektivity dotazů. Ale rovnováha mezi více a méně rozděleními stránek ovlivňuje výkon jinými způsoby.

Sledování metrik v faktoru plnění , I/O a fragmentace je dobrý způsob, jak udržet přehled o stavu indexu SQL Server.

Vyrovnávací paměť

Udělejme to jednoduše:Disk, pomalý; vyrovnávací mezipaměť, rychlá. Mezipaměť vyrovnávací paměti je kopie nedávno použitých databázových stránek uložená v paměti. Pokud tam SQL Server nenajde to, co hledá, musí pro to jít na disk, což zpomaluje výkon.

SQL Server umožňuje určit množství systémové paměti, která má být přidělena do mezipaměti vyrovnávací paměti, ale vyměňujete za paměť zbývající pro jiné úlohy. Vaším cílem je alokovat co nejvíce, aniž byste omezovali výkon SQL Serveru v jiných oblastech.

Důležitá je také očekávaná životnost stránky, což je doba, kterou stránka s informacemi z databáze stráví ve vyrovnávací paměti, aniž by se k ní znovu přistupovalo. SQL Server neustále vyřazuje stránky z mezipaměti, aby uvolnil místo pro nedávno použité. Ale čím méně užitečných stránek tam najde, tím více musí číst z disku, což zpomaluje výkon.

Metriky jako očekávaná životnost stránky a poměr úspěšných přístupů ve vyrovnávací paměti vám pomohou rozhodnout o méně častém vyřazování stránek nebo o zvětšení velikosti mezipaměti.

T-SQL

SQL Server používá dotazovací jazyk zvaný T-SQL. Spíše než spouštění příkazů SQL ad hoc se SQL Server snaží zlepšit výkon jejich dávkovým zpracováním, kompilováním jako plán provádění a ukládáním do mezipaměti. Snaží se také co nejčastěji minimalizovat frekvenci kompilace a opětovného použití plánů provádění. Pokud nemůže znovu použít plán provádění – řekněme proto, že se databáze příliš změnila – pak plán znovu zkompiluje. Nejlepší je udržovat počet rekompilací příkazů SQL co nejnižší, protože proces může spotřebovat velké množství CPU a snížit výkon.

Potřeba kompilace a opětovné kompilace je funkcí osvědčených postupů kódování, jako je použití uložených procedur a parametrizace dotazů. DBA, kteří sledují metriky, jako je míra kompilací SQL a rekompilace SQL můžete upravit tipy dotazů na SQL Server pro zlepšení výkonu.

Zámky, čekání a blokované procesy

Je frustrující zjistit, že někdo jiný něco upravuje ve stejnou dobu jako vy. Databáze tedy automaticky uzamknou věci, jako jsou řádky a tabulky, aby se do kuchyně nedostalo více kuchařů. Kompromisem za tuto ochranu je samozřejmě to, že všichni ostatní uživatelé musí počkat, až bude zdroj odemčen. A je těžké zajistit, aby zamykání probíhalo pouze na úrovni, kterou potřebuje.

Díky metrikám, které ukazují, jak často a jak široce zámky ovlivňují jiné operace, mohou správci databází určit potřebu většího množství fyzických systémových prostředků pro rychlejší zpracování transakcí. Může se také stát, že se SQL Server zamyká na zbytečně nízké úrovni. Frekvence čekání na zámek a obecněji počet zablokovaných procesů může pomoci při hledání úzkých míst.

Odstranění úzkých míst pomocí ladění výkonu SQL

"Sakra, doktore, máte pravdu se všemi pohyblivými částmi." Teď vidím, jak nemůžu jen nainstalovat SQL Server, nastavit ho a zapomenout. Potřebuji vztah živit. Ale tohle všechno mi stále připadá ohromující. Jak vůbec mohu udržet tolik různých věcí napořád a zůstat před hrou?“

„To je ta nejlepší část. Existují nástroje, které vám mohou pomoci s výkonem vašeho SQL Serveru. Nemusíš na to jít sám."

„Páni! To je uklidňující. Nevěděl jsem o tom."

"To je správně. Nástroje monitorují výkon vašeho SQL serveru a hlásí všechny tyto metriky, abyste mohli použít své techniky ladění a odstranit úzká hrdla.“

"Vážně?"

"Tak určitě. A můžeme na tom pracovat – ach, můj, tento týden nemáme čas. Domluvte si prosím schůzku s mojí recepční a příští týden vás vyzvedneme.“

„Chlapče, ty čtyři hodiny rychle utekly, doktore! Čas jistě letí, když řešíte problémy s výkonem kolem fragmentace, využití zdrojů a poměr zásahů do mezipaměti , že?"

"Ano a jsem si jistý, že jakmile budete otevřeně komunikovat o těchto problémech se svým SQL Serverem, všechny vaše problémy s výkonem budou minulostí."

Pacient povzbuzen naším sezením odešel. Příště budeme pracovat na monitorování úzkých míst výkonu SQL Serveru. Budu o tom psát na blogu, takže mějte pozor.

Mezitím mi věř. Jsem placený profesionál a doporučuji vám, abyste si tyto věci vyzkoušeli ve svém vlastním vztahu k vaší databázi. Udělejte ze svého SQL Serveru pocit, že ho chcete. Věnujte pozornost jeho metrikám výkonu.

Nikdy není pozdě to zkusit.


  1. Jak replikovat pouze INSERTy, nikoli DELETE/UPDATE na Slony Slave Node?

  2. Nejčastější dotazy k nalezení opravy použité v aplikacích Oracle

  3. Datový model agentury pro veřejné mínění

  4. Krok za krokem postgres_fdw