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

Mezipaměť:Co to je a jak to ovlivňuje výkon databáze?

V SQL Server je vyrovnávací mezipaměť paměť, která vám umožňuje rychle se dotazovat na často používaná data. Když jsou data zapisována do databáze SQL Server nebo z ní čtena, správce vyrovnávací paměti je zkopíruje do mezipaměti vyrovnávacích pamětí (neboli fondu vyrovnávacích pamětí). Když se zaplní, starší nebo méně často používané datové stránky se přesunou na pevný disk.

Proč musím monitorovat mezipaměť?

Využití paměti může mít významný dopad na výkon. Při nedostatku paměti se datové stránky často vymazávají z mezipaměti. To zpomaluje dotazy, protože SQL Server musí přejít na disk, aby našel datovou stránku, obnovil ji do mezipaměti a poté stránku četl, než může vrátit výsledky dotazu.

Existuje mnoho důvodů, proč se dotazy začínají spouštět pomalu. Ale pokud chcete vyloučit potíže s pamětí, podívejte se, co se děje uvnitř mezipaměti. Nahlédnutím do něj zjistíte, která databáze, tabulka nebo index zatěžuje paměť a vyvíjí tlak na vyrovnávací paměť.

Chcete-li zjistit, která databáze spotřebovává nejvíce paměti, použijte dotaz:

SELECTCASE database_idWHEN 32767 THEN 'ResourceDb'ELSE db_name(database_id)END AS database_name, COUNT(1)/128 AS megabytes_in_cacheFROM sys.dm_os_buffer_descriptorsGROUP BY DBSC_NAME(database_id) DESCin_BYcache megabyte DE 

Chcete-li identifikovat tabulku nebo index, který spotřebovává nejvíce paměti, spusťte tento dotaz v databázi, kterou chcete zkontrolovat:

SELECT COUNT(1)/128 AS megabytes_in_cache,name ,index_idFROM sys.dm_os_buffer_descriptors AS bdINNER JOIN(SELECT object_name(object_id) AS name,index_id ,allocation_unit_idFROM sys.allocation_units AS pconstainer_onner asys. .hobt_idAND (au.type =1 OR au.type =3)UNION ALLSELECT název_objektu(id_objektu) JAKO název,index_id,id_alokační_jednotkyFROM sys.allocation_units JAKO PŘIPOJIT SE k sys.partitions JAKO pON au.container_id =au.type_id ) AS objON bd.allocation_unit_id =obj.allocation_unit_idWHERE database_id =DB_ID()GROUP BY název, index_idORDER BY megabytes_in_cache DESC;

Správa paměti pomocí metrik

Ačkoli je užitečné namátkově kontrolovat databáze a indexy kvůli nadměrnému využití paměti, sledování metrik mezipaměti je skutečně nejlepším způsobem, jak identifikovat a vyřešit problémy s výkonem způsobené vnitřním tlakem na paměť.

Zde je pět hlavních metrik, které je třeba monitorovat za účelem zlepšení problémů s výkonem souvisejících s pamětí:

1. Poměr návštěvnosti mezipaměti

  • Tato metrika ukazuje, jak SQL Server využívá vyrovnávací paměť
  • Poměr požadavků na server určuje procento požadavků na stránky, které byly dokončeny datovými stránkami z mezipaměti, oproti všem požadavkům datových stránek.
  • Stránky, které nejsou nalezeny ve vyrovnávací paměti, se čtou z disku, což je mnohem pomalejší
  • Ideální poměr mezipaměti je 100 (tj. SQL Server čte všechny stránky z mezipaměti a žádnou z disku)
  • Doporučená hodnota mezipaměti je větší než 90

2. Očekávaná životnost stránky (PLE)

  • Očekávaná životnost stránky měří, jak dlouho (v sekundách) zůstává datová stránka ve vyrovnávací paměti
  • Čím delší je PLE, tím větší je šance, že SQL Server načte stránky z mezipaměti a nebude muset jít na disk.
  • Pokud není dostatek paměti, jsou datové stránky vyprázdněny z mezipaměti častěji, aby se uvolnilo místo pro nové stránky.
  • V minulosti, když měly systémy mnohem méně paměti než nyní, byla „normální“ hodnota PLE 300 sekund.
  • Dnes se k určení „dobrého“ PLE používá vzorec:Očekávaná životnost stránky =300 sekund na každé 4 GB RAM na vašem serveru
  • PLE by měl zůstat stabilní, bude-li monitorován v průběhu času
  • Rychlé a časté poklesy indikují problémy s pamětí
  • Pokles o více než 50 % by měl být okamžitě prošetřen

3. Čtení stránky/s (úroveň serveru)

  • Tato metrika ukazuje, kolik fyzických čtení (tj. čtení z disku) proběhlo za jednu sekundu ve všech databázích v instanci
  • Fyzické čtení je drahé a pomalé
  • Omezte fyzické čtení pomocí větší mezipaměti dat, inteligentních indexů a efektivnějších dotazů nebo změnou návrhu databáze
  • Doporučená hodnota je menší než 90
  • Hodnota vyšší než 90 označuje nedostatek paměti a problémy s indexováním

4. Zápisy stránky/s

  • Tato metrika ukazuje, kolikrát byly stránky zapsány na disk na úrovni serveru za jednu sekundu
  • Doporučená hodnota je menší než 90

5. Vstup stránek/s a Výstup stránek/s (počítadla paměti)

  • Vstup stránek/s je počet stránek přenesených z disku každou sekundu
  • Výstup stránek/s je počet stránek zapsaných na disk každou sekundu, aby se uvolnilo místo ve vyrovnávací paměti
  • Stránky/s je součet vstupů stránek/s a výstupu stránek/s
  • Pokud je hodnota stránek/s trvale vyšší než 50, je zapotřebí další šetření

Zdravá mezipaměť mezipaměti je důležitou součástí při optimalizaci rychlosti dotazů SQL Server. Přestože problémy s pamětí jsou jen jedním z několika faktorů, které mohou zpomalit odpovědi na dotazy, lze je poměrně snadno identifikovat a vyřešit. Sledování těchto pěti klíčových metrik vám může pomoci udržet datové stránky ve fondu vyrovnávací paměti déle, takže SQL Server nebude muset ztrácet čas prohledáváním disku, než vrátí výsledky dotazu.


  1. Zapomněl jsem heslo, které jsem zadal při instalaci postgresu

  2. Analyzujte JSON v TSQL

  3. Příklady LOCALTIMESTAMP – MySQL

  4. Nerozumím Collation? (Mysql, RDBMS, znakové sady)