Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
In-Memory OLTP több memóriát és más módon használ, mint az SQL Server. Lehetséges, hogy az OLTP In-Memory telepített és lefoglalt memóriája nem lesz elegendő a növekvő igényekhez. Ha igen, elfogyhat a memória. Ez a témakör az OOM-helyzetből való helyreállítást ismerteti. A Memóriahasználat monitorozása és hibaelhárítása című témakörben talál útmutatást, amely segíthet elkerülni számos OOM-helyzetet.
Ebbe a témakörbe tartozik
| Téma | Áttekintés |
|---|---|
| OOM- miatti adatbázis-visszaállítási hibák elhárítása | Mi a teendő, ha a következő hibaüzenet jelenik meg: "A visszaállítási művelet nem sikerült az adatbázis<databaseName>' számára, mert nem volt elegendő memória az erőforráskészletben"<resourcePoolName>"." |
| A kevés memória vagy az OOM-feltételek számítási feladatra gyakorolt hatásának feloldása | Mi a teendő, ha az alacsony memóriaproblémák negatívan befolyásolják a teljesítményt. |
| Lapfoglalási hibák elhárítása, ha elegendő memória áll rendelkezésre | Mi a teendő, ha a következő hibaüzenet jelenik meg: "Lapfoglalás letiltása az adatbázisban '<databaseName>' az '<resourcePoolName>' erőforráskészlet memóriájának hiánya miatt." ..." ha a művelethez elegendő memória áll rendelkezésre. |
| Ajánlott eljárások In-Memory OLTP használata virtuális gép környezetben | Mit kell szem előtt tartani In-Memory OLTP virtualizált környezetben való használatakor. |
Adatbázis-visszaállítási hibák elhárítása az OOM miatt
Amikor megpróbál visszaállítani egy adatbázist, a következő hibaüzenet jelenhet meg: "A visszaállítási művelet nem sikerült az adatbázis<databaseName>' számára, mert az erőforráskészletben nem volt elegendő memória"<resourcePoolName>"." Ez azt jelzi, hogy a kiszolgáló nem rendelkezik elegendő memóriával az adatbázis visszaállításához.
Az adatbázis visszaállításához szükséges kiszolgálónak elegendő memóriával kell rendelkeznie az adatbázis biztonsági mentésében lévő memóriaoptimalizált táblák számára, ellenkező esetben az adatbázis nem lesz online állapotban, és gyanúsként lesz megjelölve.
Ha a kiszolgáló rendelkezik elegendő fizikai memóriával, de továbbra is ezt a hibát látja, előfordulhat, hogy más folyamatok túl sok memóriát használnak, vagy egy konfigurációs probléma miatt nem áll rendelkezésre elegendő memória a visszaállításhoz. Ebben a problémás osztályban az alábbi mértékekkel teheti elérhetővé a memória méretét a visszaállítási művelet számára:
Ideiglenesen zárja be a futó alkalmazásokat.
Ha bezár egy vagy több futó alkalmazást, vagy leállítja a jelenleg nem szükséges szolgáltatásokat, elérhetővé teszi az általuk használt memóriát a visszaállítási művelethez. A sikeres visszaállítást követően újraindíthatja őket.Növelje a MAX_MEMORY_PERCENT értékét.
Ha az adatbázis erőforráskészlethez van kötve, ami az ajánlott eljárás, a visszaállításhoz rendelkezésre álló memóriát a MAX_MEMORY_PERCENT szabályozza. Ha az érték túl alacsony, a visszaállítás sikertelen lesz. Ez a kódrészlet 70% telepített memóriára módosítja MAX_MEMORY_PERCENT az erőforráskészlet PoolHk-fájlját.Fontos
Ha a kiszolgáló virtuális gépen fut, és nincs dedikált, állítsa a MIN_MEMORY_PERCENT értékét a MAX_MEMORY_PERCENT értékére.
További információkért lásd a ajánlott eljárások a In-Memory OLTP használatáról virtuális gép környezetben című témakört.-- disable resource governor ALTER RESOURCE GOVERNOR DISABLE -- change the value of MAX_MEMORY_PERCENT ALTER RESOURCE POOL PoolHk WITH ( MAX_MEMORY_PERCENT = 70 ) GO -- reconfigure the Resource Governor -- RECONFIGURE enables resource governor ALTER RESOURCE GOVERNOR RECONFIGURE GOA MAX_MEMORY_PERCENT maximális értékével kapcsolatos információkért lásd a memóriaoptimalizált táblákhoz és indexekhez rendelkezésre álló memória százalékos arányacímű témakört.
Növelje a kiszolgáló maximális memóriáját.
A kiszolgálói memória maximális konfigurálásáról további információt a kiszolgáló memóriakiszolgálójának konfigurációs beállításaicímű témakörben talál.
A kevés memória vagy az OOM-feltételek számítási feladatra gyakorolt hatásának elhárítása
Nyilvánvaló, hogy a legjobb elkerülni a kevés memória vagy OOM (Out of Memory) helyzetet. A jó tervezés és monitorozás segíthet elkerülni az OOM-helyzeteket. Ennek ellenére a legjobb tervezés nem mindig látja előre, hogy mi történik valójában, és előfordulhat, hogy kevés memóriával vagy OOM-val végződik. Az OOM-ból való helyreállításnak két lépése van:
DAC megnyitása (dedikált rendszergazdai kapcsolat)
Az SQL Server dedikált rendszergazdai kapcsolatot (DAC) biztosít. A DAC lehetővé teszi a rendszergazda számára, hogy hozzáférjen az SQL Server adatbázismotor egy futó példányához, hogy elhárítsa a kiszolgálóval kapcsolatos problémákat, még akkor is, ha a kiszolgáló nem válaszol más ügyfélkapcsolatokra. A DAC a sqlcmd segédprogramon és az SQL Server Management Studión keresztül érhető el.
A DAC SSMS vagy sqlcmdhasználatával kapcsolatos útmutatásért tekintse meg a Diagnosztikai Kapcsolat Adatbázis Rendszergazdáknakdokumentumot.
Korrekciós művelet végrehajtása
Az OOM-feltétel megoldásához vagy szabadítson fel meglévő memóriát a használat csökkentésével, vagy több memóriát kell elérhetővé tennie a memóriában lévő táblák számára.
Szabadítson fel meglévő memóriát
Törölje a nem alapvető memóriaoptimalizált táblázatsorokat, és várja meg a szemétgyűjtést
A nem alapvető sorokat eltávolíthatja a memóriaoptimalizált táblákból. A szemétgyűjtő visszaadja a sorok által használt memóriát a rendelkezésre álló memória számára. A memóriában lévő OLTP motor agresszíven gyűjti a szemétsorokat. A hosszú ideig futó tranzakciók azonban megakadályozhatják a szemétgyűjtést. Ha például van egy tranzakciója, amely 5 percig fut, a frissítési/törlési műveletek miatt létrehozott sorverziók a tranzakció aktív ideje alatt nem törölhetők.
Egy vagy több sor áthelyezése lemezalapú táblába
Az alábbi TechNet-cikkek útmutatást nyújtanak a sorok memóriaoptimalizált táblából lemezalapú táblába való áthelyezéséhez.
A rendelkezésre álló memória növelése
MAX_MEMORY_PERCENT értékének növelése az erőforráskészleten
Ha még nem hozott létre elnevezett erőforráskészletet a memóriában lévő táblákhoz, akkor ezt kell tennie, és a In-Memory OLTP-adatbázisokat hozzá kell kötnie. A(z) , "Adatbázis és Memory-Optimized táblák kötése az erőforráskészlethez" című témakör útmutatást nyújt az In-Memory OLTP-adatbázisok erőforráskészlethez való létrehozásáról és kötéséről.
Ha az In-Memory OLTP-adatbázis egy erőforráskészlethez van kötve, akkor növelheti a készlet által elérhető memória százalékát. Az erőforráskészlet MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT értékének módosításával kapcsolatos útmutatásért tekintse meg a Meglévő készlet MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT módosítása című témakört.
Növelje a MAX_MEMORY_PERCENT értékét.
Ez a kódrészlet 70% telepített memóriára módosítja MAX_MEMORY_PERCENT az erőforráskészlet PoolHk-fájlját.
Fontos
Ha a kiszolgáló virtuális gépen fut, és nincs dedikált, állítsa be a MIN_MEMORY_PERCENT értékét, és MAX_MEMORY_PERCENT azonos értékre.
További információkért lásd a ajánlott eljárások In-Memory OLTP egy virtuális gép környezetben használata című témát.
-- disable resource governor
ALTER RESOURCE GOVERNOR DISABLE
-- change the value of MAX_MEMORY_PERCENT
ALTER RESOURCE POOL PoolHk
WITH
( MAX_MEMORY_PERCENT = 70 )
GO
-- reconfigure the Resource Governor to enabled it
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
A MAX_MEMORY_PERCENT maximális értékével kapcsolatos információkért lásd a memóriaoptimalizált táblákhoz és indexekhez rendelkezésre álló memória százalékos arányacímű témakört.
További memória telepítése
Végső soron a legjobb megoldás, ha lehetséges, további fizikai memória telepítése. Ha ezt teszi, ne feledje, hogy valószínűleg növelni fogja a MAX_MEMORY_PERCENT értékét is (lásd a MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT módosítása meglévő készletencímű témakört), mivel az SQL Servernek valószínűleg nincs szüksége több memóriára, így a legtöbbet teheti elérhetővé az erőforráskészlet számára, ha nem minden újonnan telepített memóriát.
Fontos
Ha a kiszolgáló virtuális gépen fut, és nincs dedikált, állítsa be a MIN_MEMORY_PERCENT értékét, és MAX_MEMORY_PERCENT azonos értékre.
Az ajánlott eljárások témakörben további információt talál az In-Memory OLTP virtuális gépkörnyezetekben való használatáról.
Ha elegendő memória áll rendelkezésre, az oldalfoglalási hibák elhárítása a memória elégtelensége miatt
Ha a hibanaplóban a Disallowing page allocations for database '*\<databaseName>*' due to insufficient memory in the resource pool '*\<resourcePoolName>*'. See 'https://go.microsoft.com/fwlink/?LinkId=330673' for more information. hibaüzenetet látja, amikor a rendelkezésre álló fizikai memória elegendő a lap lefoglalásához, annak oka lehet, hogy az erőforrás-felügyelet le van tiltva. Ha a Resource Governor le van tiltva, MEMORYBROKER_FOR_RESERVE mesterséges memóriaterhelést vált ki.
A probléma megoldásához engedélyeznie kell az erőforrás-kezelőt.
A korlátozásokról és korlátozásokról Az Erőforrás-vezérlő engedélyezése, valamint az Erőforrás-kormányzó objektumkezelő, erőforrás-kormányzó tulajdonságai vagy Transact-SQL használatával történő engedélyezéséről szóló útmutatást talál.
Ajánlott eljárások In-Memory OLTP használatával virtuálisgép-környezetben
A kiszolgálóvirtualizálással csökkentheti az informatikai tőkét és a működési költségeket, és nagyobb informatikai hatékonyságot érhet el az alkalmazáskiépítési, karbantartási, rendelkezésre állási és biztonsági mentési/helyreállítási folyamatokkal. A legújabb technológiai fejlődéssel az összetett adatbázis-számítási feladatok könnyebben konszolidálhatók virtualizálással. Ez a témakör az SQL Server In-Memory OLTP virtualizált környezetben való használatának ajánlott eljárásait ismerteti.
Memória előfoglalása
A virtualizált környezetben lévő memória esetében a jobb teljesítmény és a fokozott támogatás alapvető szempontok. Képesnek kell lennie arra, hogy a memóriát gyorsan lefoglalja a virtuális gépek számára a követelmények alapján (csúcs- és gyengébb terhelés), és győződjön meg arról, hogy a memória ne menjen kárba. A Hyper-V dinamikus memória funkció növeli a gazdagépen futó virtuális gépek közötti memória lefoglalásának és felügyeletének rugalmasságát.
Az SQL Server virtualizálásához és kezeléséhez ajánlott eljárásokat módosítani kell az adatbázisok memóriaoptimalizált táblákkal való virtualizálásakor. Memóriaoptimalizált táblák nélkül két ajánlott eljárás:
- Ha minimális kiszolgálómemóriát használ, jobb, ha csak a szükséges memóriamennyiséget rendeli hozzá, így elegendő memória marad más folyamatokhoz (így elkerülve a lapozást).
- Ne állítsa túl magasra a memória előfoglalási értékét. Ellenkező esetben előfordulhat, hogy más folyamatok nem kapnak elegendő memóriát a szükséges időpontban, és ez memória-lapozást eredményezhet.
Ha követi a memóriaoptimalizált táblákkal rendelkező adatbázisok fenti gyakorlatát, az adatbázis visszaállításának és helyreállításának megkísérlése azt eredményezheti, hogy az adatbázis "Helyreállítási függőben" állapotban van, még akkor is, ha elegendő memóriával rendelkezik az adatbázis helyreállításához. Ennek az az oka, hogy az indításkor In-Memory OLTP agresszívabban hozza az adatokat a memóriába, mint a dinamikus memóriafoglalás, amely memóriát rendel az adatbázishoz.
Felbontás
Ennek csökkentése érdekében előre lefoglaljon elegendő memóriát az adatbázis számára az adatbázis helyreállításához vagy újraindításához, ne pedig a dinamikus memóriára támaszkodó minimális érték, hogy szükség esetén további memóriát biztosítson.
Lásd még:
Memória kezelése In-Memory OLTP-
Memóriahasználati monitorozása és hibaelhárítása
Adatbázis kötése Memory-Optimized táblákkal egy erőforráskészlethez
Memóriakezelési architektúra útmutatója
kiszolgáló memóriakiszolgálójának konfigurációs beállításai