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

Monitorování předpokládané životnosti stránky na serveru SQL

Metrika SQL Server Page Life Expectancy (PLE) byla dlouho považována za klíčový ukazatel výkonu pro správce databází, kteří sledují celkový stav svých databázových instancí. PLE ukazuje, zda je systém pod tlakem vnitřní paměti pomocí čítačů poskytovaných objektem Buffer Manager.

Bližší pohled na předpokládanou životnost stránky

PLE je měřítkem doby (v sekundách), po kterou se očekává, že stránka datového souboru zůstane ve fondu vyrovnávacích pamětí serveru SQL Server. Tato metrika není agregací nebo akumulací, ale jednoduše hodnotou bodu v čase, kterou DBA budou dotazovat ze Správce vyrovnávací paměti.

SQL Server pouze čte datové stránky z fondu vyrovnávacích pamětí (tj. logické čtení), takže pokud stránka není ve fondu vyrovnávacích pamětí, najde ji na disku (tj. fyzické čtení) a přesune stránku do fondu vyrovnávacích pamětí, aby umí to logické čtení. Tento proces je časově náročný a může negativně ovlivnit výkon.

Co je to „dobrá“ hodnota PLE?

Vysoká hodnota PLE znamená, že stránka zůstane ve fondu vyrovnávací paměti déle, takže je méně pravděpodobné, že SQL Server bude muset hledat datovou stránku na disk, což zrychluje běh systému.

Historicky DBA považovali 300 sekund (pět minut) za sladkou tečku PLE. Toto číslo je však dosti libovolné. Microsoft doporučoval 300 jako standard PLE již v roce 2000, kdy byla paměť omezená.

Dnes se DBA nezaměřují na „správné“ číslo, protože kbelíky paměti jsou standardem většiny systémů. Není neobvyklé, že SQL Server běží na systému, který má k dispozici TB RAM, takže správci databází přijali obecný přístup k identifikaci „dobré“ hodnoty PLE:

Očekávaná životnost stránky =300 sekund na každé 4 GB RAM na vašem serveru

Pravděpodobně je však důležitější neustále sledovat hodnoty PLE kvůli změnám v konzistenci, abyste mohli identifikovat problémy s pamětí a rychle je vyřešit.

Pokud pracujete s velkým objemem dat, je důležité si uvědomit, že větší servery mají často více PLE. Každý uzel s nejednotným přístupem do paměti (NUMA) získá svou vlastní hodnotu PLE a tato čísla se pak vypočítají, aby se získala hodnota PLE serveru. Vezměme například hodnotu PLE uzlu x 1 000 (proveďte to pro všechny uzly NUMA). Sečtěte hodnoty všech uzlů, vydělte celkovým počtem uzlů NUMA a poté znovu vydělte 1 000. Tím získáte server PLE.

Jak zjistit, zda existuje problém s předpokládanou životností stránky

Kolísání PLE je normální, protože je založeno na pracovní zátěži. Sledování vysokých, průměrných a nízkých trendů vám může ukázat, zda určité procesy, jako je skenování tabulek nebo vyprázdnění mezipaměti, je třeba vyladit, aby se PLE zlepšilo.

Dobrým způsobem, jak zjistit, zda došlo k problému, je, pokud normální rozsah hodnot PLE klesne a zůstane nízký. To naznačuje, že pravděpodobně existuje zvýšená poptávka a tlak na zásobník vyrovnávacích pamětí.

Znamená to, že na problém musíte hodit více paměti? Možná. Možná ne.

Odstraňování problémů s nízkou očekávanou životností stránky SQL Server

Existuje několik důvodů, proč hodnoty PLE mohou být nízké. Je důležité problém vyřešit, protože řešení není pro každou hlavní příčinu stejné. Zde jsou tři z viníků, kteří s největší pravděpodobností zpomalují váš PLE:

Nedostatek paměti

Pokud se pracovní zátěž neustále zvyšuje a PLE se snižuje, pravděpodobně máte nedostatek paměti. Přidání paměti může pomoci zvýšit PLE, ale nezefektivní běh dotazů.

Nákladné operace

Pokud se pracovní vytížení nezměnilo, ale existuje zvýšená poptávka po fondu vyrovnávacích pamětí, může se stát, že odlehlé hodnoty využívají více paměti. Zkontrolujte, zda nejsou spuštěny úlohy údržby nebo neprobíhají přestavby indexu.

Zastaralé statistiky

Zastaralé statistiky mohou způsobit změny v plánu dotazů. To zvyšuje poptávku po fondu vyrovnávacích pamětí tím, že způsobuje drahé operace, protože nejsou synchronizovány s novými statistikami.

Jak opravit nízkou očekávanou životnost stránky optimalizací dotazů

Nejlepší způsob, jak opravit nízké hodnoty PLE, je přejít ke zdroji a optimalizovat dotazy SQL Server. To přichází s dalším bonusem, protože optimalizace dotazů současně zlepší celkový výkon vašeho systému.

Existuje několik věcí, které budete chtít udělat a které vám pomohou optimalizovat dotazy pro maximální zlepšení PLE:

  • Zrušte nepoužívané indexy
  • Sloučit duplicitní indexy
  • Hledejte velké dotazy
  • Zjistěte, co je ve fondu vyrovnávacích pamětí
  • Defragmentujte indexy
  • Aktualizovat statistiky
  • Vymazat data

Sledování předpokládané životnosti stránky v průběhu času

Přestože je PLE metrikou k určitému časovému okamžiku, sledování PLE v průběhu času je důležitým způsobem, jak včas identifikovat problémy a rychle je opravit, než bude výkon výrazně ovlivněn.

Existuje mnoho způsobů, jak sledovat metriku PLE v průběhu času a identifikovat dotazy, jejichž transakce způsobují velké množství čtení. DMV a rozšířené události v SQL Server jsou osvědčené metody a byly v tomto procesu shromažďování dat zásadní. Jsou však také manuální a časově náročné a nabízejí omezené výhody, pokud jde o získání historického pohledu na metrický výkon v průběhu času.

Komerční řešení, jako je Spotlight Cloud, nejenže poskytuje správcům databází možnost sledovat PLE v průběhu času přímo po vybalení, ale také analyzuje pracovní zátěž, aby zjistila, které dotazy a odlehlé aktivity způsobují tlak na vyrovnávací paměť, takže můžete izolovat a napravit problém a optimalizovat výkon serveru SQL.

Původně publikováno v dubnu 2019 a aktualizováno v září 2020.


  1. Automatické ladění Azure SQL Database

  2. Jak převést číslo na slova - ORACLE

  3. Operátor SQL menší nebo rovno (=) pro začátečníky

  4. chyba syntaxe s aktualizačním dotazem při spojení s nějakou tabulkou