Megosztás a következőn keresztül:


Hibrid pufferkészlet

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

A hibrid pufferkészlet lehetővé teszi, hogy a pufferkészlet-objektumok az állandó memória (PMEM) eszközein található adatbázisfájlok adatlapjaira hivatkozjanak, ahelyett, hogy le kellene kérniük az adatlapok másolatát a lemezről, és gyorsítótárazniuk kell őket a változó DRAM-ban. Ez a funkció az SQL Server 2019-ben (15.x) lett bevezetve, és tovább bővül az SQL Server 2022 -ben (16.x).

A pufferkészletet bemutató diagram a hibrid pufferkészlet engedélyezésével és nélkül.

Az állandó memória (PMEM)-eszközök bájtcímezhetők, és ha közvetlen hozzáférésű (DAX) állandó memóriaérzékeny fájlrendszert (például XFS, EXT4 vagy NTFS) használnak, a fájlrendszer fájljai az operációs rendszer szokásos fájlrendszer API-jaival érhetők el. Másik lehetőségként az SQL Server betöltési és tárolási műveleteket hajthat végre a PMEM-eszközön található fájlok memóriatérképén. Ez lehetővé teszi, hogy a PMEM-et támogató alkalmazások, például az SQL Server a hagyományos tárolóverem bejárása nélkül férhessenek hozzá az eszközön található fájlokhoz.

A hibrid pufferkészlet ezt a képességet használja a memórialeképezett fájlok terhelési és tárolási műveleteinek végrehajtására, a PMEM-eszköz gyorsítótárként való használatára a pufferkészlethez és az adatbázisfájlok tárolási helyéhez. Ez azt az egyedi helyzetet hozza létre, amelyben a logikai olvasás és a fizikai olvasás lényegében ugyanaz a művelet lesz. Az állandó memóriaeszközök a memóriabuszon keresztül is elérhetők, csakúgy, mint a normál, illékony DRAM.

Alapértelmezés szerint csak a tiszta adatoldalak lesznek gyorsítótárazva a hibrid pufferkészlet PMEM-modulján. Ahhoz, hogy egy lap módosuljon és piszkosként legyen megjelölve, át kell másolni a PMEM-eszközről egy DRAM pufferkészletbe, módosítani kell, majd végül a módosított lap másolatát vissza kell írni a DRAM-ból a PMEM modulba, ahol újra tisztaként lehet megjelölni. Ez a folyamat olyan normál háttérműveletekkel történik, mint az ellenőrzőpont vagy a lusta író, mintha a PMEM-modul standard blokkeszköz lenne.

A hibrid pufferkészlet funkció Windows és Linux rendszeren is elérhető. A PMEM-eszköznek olyan fájlrendszert kell használnia, amely támogatja a DAX-ot (DirectAccess). Az XFS, az EXT4 és az NTFS fájlrendszerek mindegyike támogatja a DAX-bővítményeket, amelyek közvetlenül a felhasználói területről biztosítják a fájlrendszer elérését. Az SQL Server észleli, hogy az adatbázis-adatfájlok egy megfelelően konfigurált PMEM-lemezeszközön találhatók-e, és automatikusan elvégzik az adatbázisfájlok szükséges memórialeképezését az adatbázis indításakor, vagy amikor egy adatbázist csatolnak, visszaállítanak vagy létrehoznak.

További információkért lásd:

Hibrid pufferkészlet engedélyezése

Az SQL Server 2019 (15.x) dinamikus adatnyelvet (DDL) vezet be a hibrid pufferkészlet vezérléséhez.

Az alábbi példa engedélyezi a hibrid pufferkészletet az SQL Server egy példányához:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

Alapértelmezés szerint a hibrid pufferkészlet le van tiltva a példány hatókörében. A beállítás módosításának érvénybe lépéséhez újra kell indítani az SQL Server-példányt. Újraindításra van szükség a megfelelő kivonatlapok kiosztásának megkönnyítéséhez, hogy figyelembe vegyék a teljes PMEM-kapacitást a kiszolgálón.

Az alábbi példa egy adott adatbázis hibrid pufferkészletét teszi lehetővé.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

Alapértelmezés szerint a hibrid pufferkészlet engedélyezve van az adatbázis hatókörében.

Hibrid pufferkészlet letiltása

Az alábbi példa letiltja a hibrid pufferkészletet a példány szintjén:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

A hibrid pufferkészlet alapértelmezés szerint le van tiltva a példány szintjén. A módosítás érvénybe lépéséhez a példányt újra kell indítani. Az újraindítás biztosítja, hogy elegendő kivonatlap legyen lefoglalva a pufferkészlethez, mivel a kiszolgálón lévő PMEM-kapacitást most el kell számolni.

Az alábbi példa letiltja egy adott adatbázis hibrid pufferkészletét.

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

Alapértelmezés szerint a hibrid pufferkészlet engedélyezve van az adatbázis hatókörében, és le van tiltva a kiszolgáló hatókörében.

Hibrid pufferkészlet konfigurációjának megtekintése

Futtatási idő értékének megjelenítése

Az alábbi példa a példány aktuális hibrid pufferkészlet-konfigurációs állapotát adja vissza.

SELECT * FROM sys.server_memory_optimized_hybrid_buffer_pool_configuration;

Az alábbi példa az adatbázisokat és a hibrid pufferkészlet (is_memory_optimized_enabled) adatbázisszint-beállítását sorolja fel.

A PMEM modult a DAX engedélyezése nélkül is csatlakoztathatja vagy formázhatja, és normál blokkeszközként is kezelheti (azaz i/O-t hajthat végre a kernelen keresztül). Ha így van konfigurálva, az SQL Server egyetlen PMEM-modult sem használhat bájtcímezhető műveletek végrehajtására (vagyis minden hívás kernel-szóköz illesztőprogramokat fog használni).

SELECT name, is_memory_optimized_enabled
FROM sys.databases;

Hibrid pufferkészlet közvetlen írással

A közvetlen írási viselkedésű hibrid pufferkészlet csökkenti a PMEM-eszközökön található módosított adatokon vagy indexlapokon végrehajtandó parancsok számát memcpy . Ezt úgy teszi, hogy a tartósan megmaradó naplópuffert használja a lap módosítására anélkül, hogy azt a DRAM-pufferkészletek egyikébe kellene másolnia. Ehelyett a PMEM-eszközökön található adatbázisfájlok lapjait közvetlenül módosítják anélkül, hogy a DRAM-pufferkészletben gyorsítótáraznak, majd később aszinkron módon kiüríteni a lemezt. Ez a viselkedés továbbra is megfelel az előre írt naplózás (WAL) szemantikájának, mivel a tartós tranzakciónapló-pufferben lévő (napló)rekordokat tartós adathordozóra írták vagy edzették. Jelentős teljesítménynövekedést figyeltek meg a hibrid pufferkészletet használó tranzakciós számítási feladatok esetében, és így együtt őrizték meg a naplópuffert.

A közvetlen írási mód engedélyezéséhez engedélyezze a hibrid pufferkészletet és a naplópuffert egy adatbázishoz, és engedélyezze az indítási nyomkövetési jelző 809-et.

Ajánlott eljárások a hibrid pufferkészlethez

  • Ha a PMEM-eszközt Windows rendszeren formázza, használja az NTFS-hez elérhető legnagyobb foglalási egységméretet (Windows Server 2019 és újabb verziókban 2 MB), és győződjön meg arról, hogy az eszköz DAX (Direct Access) formátumban lett formázva.

  • Engedélyezze a Lapok zárolása a memóriaszabályzatban Windows rendszeren.

  • A fájlméreteknek 2 MB többszörösnek kell lenniük (a modulo 2 MB-nak nullával kell egyenlőnek lennie).

  • Ha a hibrid pufferkészlet kiszolgálói hatókörű beállítása le van tiltva, a szolgáltatást egyetlen felhasználói adatbázis sem fogja használni.

  • Ha engedélyezve van a hibrid pufferkészlet kiszolgálóhatókörű beállítása, az adatbázis-hatókörű beállítással letilthatja a funkciót az egyes felhasználói adatbázisok esetében.

  • Az SQL Server 2019 (15.x) CU 3 (lásd KB4538118) esetében alapértelmezés szerint engedélyezve van az olvasási gyorsítótárazás, amely a hibrid pufferkészletben nyomon követi a legmelegebb lapokat, majd automatikusan előlépteti a DRAM pufferkészletet a teljesítmény javítása érdekében.

  • Az SQL Server 2022 (16.x) CU 1 esetében a közvetlen írás az alapértelmezett viselkedés, ha a hibrid pufferkészletet a rendszer a fenntartott naplópufferrel kombinálja. Ennek szinte az összes számítási feladat teljesítményén javítania kell, de mindig van esély a regresszióra, és a CU-t alaposan tesztelni kell az alkalmazás előtt. Ha a viselkedésváltozás miatt regressziót tapasztal, az indítási nyomkövetési jelző 898-at használva visszatérhet az előző viselkedéshez.

  • Az SQL Server 2022 (16.x) CU 1-től kezdve a 809-et az SQL Server az indításkor figyelmen kívül hagyja. A 809 nyomkövetési jelző és a 898 nyomkövetési jelző csak a Windowsra vonatkozik, linuxos SQL Serverre nem. A nyomkövetési jelzőket csak akkor szabad használni, ha erre egy hitelesített Microsoft Server-szakember utasítja.