Sdílet prostřednictvím


Fond hybridních vyrovnávacích pamětí

Platí pro: SQL Server 2019 (15.x) a novější verze

Fond hybridní vyrovnávací paměti umožňuje, aby objekty fondu vyrovnávací paměti odkazovaly na datové stránky v databázových souborech umístěných v zařízeních s trvalou pamětí (PMEM), místo aby musely načítat kopie datových stránek z disku a ukládat je do mezipaměti v nestálém DRAM. Tato funkce byla představena v SYSTÉMU SQL Server 2019 (15.x) a je dále rozšířena v SYSTÉMU SQL Server 2022 (16.x).

Diagram znázorňující fond vyrovnávacích pamětí s povoleným fondem vyrovnávací paměti a bez fondu hybridní vyrovnávací paměti

Zařízení s trvalou pamětí (PMEM) jsou bajtově adresovatelná a pokud se používá systém souborů s podporou trvalého přístupu (DAX) s trvalou pamětí (například XFS, EXT4 nebo NTFS), můžou být soubory v systému souborů přístupné pomocí obvyklých rozhraní API systému souborů v operačním systému. Sql Server může také provádět operace, které se označují jako operace načítání a ukládání na mapách paměti souborů na zařízení PMEM. To umožňuje aplikacím, jako je SQL Server, přistupovat k souborům na zařízení bez procházení tradičního zásobníku úložiště.

Fond hybridních vyrovnávacích pamětí používá tuto schopnost provádět operace načítání a ukládání s mapovanými soubory paměti k použití zařízení PMEM jako mezipaměť pro fond vyrovnávací paměti a umístění úložiště pro soubory databáze. Tím se vytvoří jedinečná situace, kdy se logické čtení i fyzické čtení stane v podstatě stejnou operací. Trvalá paměťová zařízení jsou přístupná přes sběrnici paměti stejně jako běžná nestálé DRAM.

Ve výchozím nastavení se v modulu PMEM pro fond hybridních vyrovnávacích pamětí ukládají pouze čisté datové stránky do mezipaměti. Aby se stránka změnila a označila jako špinavá, musí být zkopírována ze zařízení PMEM do fondu vyrovnávací paměti DRAM, upravena a nakonec se kopie upravené stránky zapíše z DRAM zpět do modulu PMEM, v tomto okamžiku může být znovu označena jako čistá. K tomuto procesu dochází pomocí normálních operací na pozadí, jako je kontrolní bod nebo opožděný zapisovač, jako by modul PMEM byl standardní blokové zařízení.

Funkce fondu hybridních vyrovnávacích pamětí je k dispozici pro Windows i Linux. Zařízení PMEM musí používat systém souborů, který podporuje jazyk DAX (DirectAccess). Všechny systémy souborů XFS, EXT4 a NTFS mají podporu pro rozšíření DAX, která poskytuje přístup k systému souborů přímo z uživatelského prostoru. SQL Server zjistí, jestli se nějaké datové soubory databáze nacházejí v odpovídajícím nakonfigurovaném diskovém zařízení PMEM, a automaticky provede potřebné mapování paměti databázových souborů při spuštění databáze nebo při každém připojení, obnovení nebo vytvoření databáze.

Další informace najdete tady:

Povolení fondu hybridních vyrovnávacích pamětí

SQL Server 2019 (15.x) zavádí dynamický jazyk dat (DDL) pro řízení fondu hybridní vyrovnávací paměti.

Následující příklad umožňuje fond hybridních vyrovnávacích pamětí pro instanci SQL Serveru:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

Ve výchozím nastavení je fond hybridní vyrovnávací paměti v oboru instance zakázaný. Aby se změna nastavení projevila, musí se instance SQL Serveru restartovat. K usnadnění přidělování dostatečných hash stránek je potřeba restartování, aby se zohlednila celková kapacita PMEM na serveru.

Následující příklad umožňuje fond hybridní vyrovnávací paměti pro konkrétní databázi.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

Ve výchozím nastavení je fond hybridní vyrovnávací paměti povolený v oboru databáze.

Zakázání fondu hybridních vyrovnávacích pamětí

Následující příklad zakáže fond hybridních vyrovnávacích pamětí na úrovni instance:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

Ve výchozím nastavení je fond hybridní vyrovnávací paměti na úrovni instance zakázaný. Aby se tato změna projevila, musí se instance restartovat. Restartování zajišťuje, že pro fond vyrovnávací paměti je přiděleno dostatek hodnot hash stránek, protože kapacita PMEM na serveru se teď musí počítat.

Následující příklad zakáže fond hybridních vyrovnávacích pamětí pro konkrétní databázi.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

Ve výchozím nastavení je fond hybridní vyrovnávací paměti povolený v oboru databáze a v oboru serveru je zakázaný.

Zobrazení konfigurace fondu hybridních vyrovnávacích pamětí

Zobrazit hodnotu doby běhu

Následující příklad vrátí aktuální stav konfigurace fondu hybridní vyrovnávací paměti instance.

SELECT * FROM sys.server_memory_optimized_hybrid_buffer_pool_configuration;

Následující příklad uvádí databáze a nastavení na úrovni databáze pro fond hybridních vyrovnávacích pamětí (is_memory_optimized_enabled).

Modul PMEM můžete také připojit nebo naformátovat bez povolení jazyka DAX a považovat ho za běžné blokové zařízení (to znamená provádět vstupně-výstupní operace prostřednictvím jádra). Při konfiguraci tímto způsobem nemusí SQL Server používat žádné moduly PMEM k provádění bajtů adresovatelných operací (to znamená, že všechna volání budou používat ovladače jádra-space).

SELECT name, is_memory_optimized_enabled
FROM sys.databases;

Hybridní buffer pool s přímým zápisem

Hybridní fond vyrovnávací paměti s chováním přímého zápisu snižuje počet příkazů, které je potřeba provést na upravených memcpy datech nebo indexových stránkách umístěných na zařízeních PMEM. Dělá to pomocí trvalé trvalé vyrovnávací paměti protokolu jako prostředek k úpravě stránky bez nutnosti kopírovat do některého z fondů vyrovnávací paměti DRAM. Místo toho se stránky v databázových souborech umístěných na zařízeních PMEM upraví přímo, aniž by bylo nutné ukládat do mezipaměti ve fondu vyrovnávacích pamětí DRAM a později asynchronně vyprázdnit na disk. Toto chování stále dodržuje sémantiku protokolování před zápisem (WAL), protože záznamy (protokol) v trvalé vyrovnávací paměti transakčního protokolu byly zapsány nebo posíleny do trvalých médií. U transakčních úloh pomocí fondu hybridní vyrovnávací paměti a trvalé vyrovnávací paměti protokolu tímto způsobem byly pozorovány značné zvýšení výkonu.

Chcete-li povolit režim přímého zápisu, povolte fond hybridní vyrovnávací paměti a trvalý vyrovnávací paměť protokolu pro databázi a povolte příznak trasování spouštění 809.

Osvědčené postupy pro fond hybridních vyrovnávacích pamětí

  • Při formátování zařízení PMEM ve Windows použijte největší dostupnou velikost alokační jednotky pro NTFS (2 MB ve Windows Serveru 2019 a novějším) a ujistěte se, že je zařízení naformátované pro JAZYK DAX (Přímý přístup).

  • Povolte uzamčení stránek v zásadách paměti ve Windows.

  • Velikosti souborů by měly být násobkem 2 MB (modulo 2 MB by se měl rovnat nule).

  • Pokud je nastavení s oborem serveru pro fond hybridních vyrovnávacích pamětí zakázané, nebude tato funkce používána žádnou uživatelskou databází.

  • Pokud je povolené nastavení serveru pro fond hybridních vyrovnávacích pamětí, můžete pomocí nastavení s vymezeným oborem databáze zakázat funkci pro jednotlivé uživatelské databáze.

  • Od verze SQL Server 2019 (15.x) CU 3 (viz KB4538118) bylo ve výchozím nastavení povoleno ukládání do mezipaměti pro čtení, proces, kdy jsou nejžhavější stránky sledovány v hybridním fondu vyrovnávacích pamětí a následně automaticky povýšeny na fond vyrovnávací paměti DRAM za účelem zlepšení výkonu.

  • Od verze SQL Server 2022 (16.x) CU 1 je přímé zápis výchozí chování při kombinaci fondu hybridní vyrovnávací paměti s trvalou vyrovnávací pamětí protokolu. To by mělo zvýšit výkon pro téměř všechny úlohy, ale vždy existuje šance na regresi a CU by se mělo před uplatněním důkladně otestovat. Pokud dojde k regresi z důvodu této změny chování, můžete se vrátit k předchozímu chování za použití start-up trace flagu 898.

  • Od verze SQL Server 2022 (16.x) CU 1 bude příznak trasování 809 při spuštění ignorován SQL Serverem. Příznak trasování 809 i příznak trasování 898 platí jenom pro Windows a nevztahuje se na SQL Server v Linuxu. Příznaky trasování by měly být použity pouze v případě, že je nasměruje certifikovaný odborník na Microsoft Server.