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
Az erőforráskészlet a szabályozható fizikai erőforrások egy részét jelöli. Alapértelmezés szerint az SQL Server-adatbázisok az alapértelmezett erőforráskészlet erőforrásaihoz vannak kötve és használnak fel. Ha meg szeretné védeni az SQL Servert attól, hogy az erőforrásait egy vagy több memóriaoptimalizált tábla használja fel, és hogy a többi memóriafelhasználó ne használja fel a memóriaoptimalizált táblákhoz szükséges memóriát, külön erőforráskészletet kell létrehoznia az adatbázis memóriahasználatának memóriaoptimalizált táblákkal való kezeléséhez.
Egy adatbázis csak egy erőforráskészlethez köthető. Azonban több adatbázist is köthet ugyanahhoz a készlethez. Az SQL Server lehetővé teszi az adatbázis memóriaoptimalizált táblák nélküli kötését egy erőforráskészlethez, de nincs hatása. Előfordulhat, hogy egy adatbázist egy elnevezett erőforráskészlethez szeretne kötni, ha a jövőben memóriaoptimalizált táblákat szeretne létrehozni az adatbázisban.
Mielőtt egy adatbázist egy erőforráskészlethez köthet, az adatbázisnak és az erőforráskészletnek is léteznie kell. A kötés az adatbázis következő online állapotba helyezésekor lép érvénybe. További információt Adatbázisállapotok című témakörben talál.
További információ az erőforráskészletekről: Resource Governor erőforráskészlet.
Az adatbázis erőforráskészlethez való kötésének lépései
Adatbázis és erőforráskészlet létrehozása
Az MIN_MEMORY_PERCENT és a MAX_MEMORY_PERCENT minimális értékének meghatározása
Erőforráskészlet létrehozása és a memória konfigurálása
A témakör egyéb tartalmai
Meglévő erőforráskészlet MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT értékeinek módosítása
Memóriaoptimalizált táblákhoz és indexekhez rendelkezésre álló memória százalékos aránya
Az adatbázis és az erőforráskészlet létrehozása
Az adatbázist és az erőforráskészletet bármilyen sorrendben létrehozhatja. A lényeg az, hogy mindkettő létezik, mielőtt az adatbázist az erőforráskészlethez köti.
Az adatbázis létrehozása
Az alábbi Transact-SQL létrehoz egy IMOLTP_DB nevű adatbázist, amely egy vagy több memóriaoptimalizált táblát tartalmaz. A parancs futtatása előtt a <meghajtónak és az elérési útnak> léteznie kell.
CREATE DATABASE IMOLTP_DB
GO
ALTER DATABASE IMOLTP_DB ADD FILEGROUP IMOLTP_DB_fg CONTAINS MEMORY_OPTIMIZED_DATA
ALTER DATABASE IMOLTP_DB ADD FILE( NAME = 'IMOLTP_DB_fg' , FILENAME = 'c:\data\IMOLTP_DB_fg') TO FILEGROUP IMOLTP_DB_fg;
GO
A MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT minimális értékének meghatározása
Miután meghatározta a memóriaoptimalizált táblák memóriaigényét, meg kell határoznia, hogy a rendelkezésre álló memória hány százaléka szükséges, és állítsa a memória százalékos értékét erre az értékre vagy magasabbra.
példa:
Ebben a példában azt feltételezzük, hogy a számítások alapján megállapította, hogy a memóriaoptimalizált tábláknak és indexeknek 16 GB memóriára van szükségük. Tegyük fel, hogy 32 GB memória van lekötve a használatra.
Első pillantásra úgy tűnhet, hogy MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT 50-be kell állítania (16 50% a 32-ből). Ez azonban nem biztosít elegendő memóriát a memóriaoptimalizált táblák számára. Az alábbi táblázatot tekintve (Memóriaoptimalizált táblákhoz és indexekhez rendelkezésre álló memória százalékos aránya) azt látjuk, hogy ha 32 GB lekötött memória áll rendelkezésre, akkor csak 80% érhető el a memóriaoptimalizált táblákhoz és indexekhez. Ezért a minimális és maximális százalékértékeket a rendelkezésre álló memória alapján számítjuk ki, nem pedig a véglegesített memóriát.
memoryNeeded = 16
memoryCommitted = 32
availablePercent = 0.8
memoryAvailable = memoryCommitted * availablePercent
percentNeeded = memoryNeeded / memoryAvailable
Valós számok behelyettesítése
percentNeeded = 16 / (32 * 0.8) = 16 / 25.6 = 0.625
Így a memóriaoptimalizált táblák és indexek 16 GB-os követelményeinek teljesítéséhez a rendelkezésre álló memória legalább 62,5% részére van szükség. Mivel a MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT értékeinek egész számoknak kell lenniük, legalább 63%értékre állítjuk őket.
Erőforráskészlet létrehozása és a memória konfigurálása
A memóriaoptimalizált táblák memóriájának konfigurálásakor a kapacitástervezést a MIN_MEMORY_PERCENT alapján kell elvégezni, nem pedig a MAX_MEMORY_PERCENT alapján. A MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT a ALTER RESOURCE POOL (Transact-SQL) című témakörben található. Ez kiszámíthatóbb memória-rendelkezésre állást biztosít a memóriaoptimalizált táblák számára, mivel MIN_MEMORY_PERCENT más erőforráskészletekre nehezedő memóriaterhelést okoz annak biztosítása érdekében, hogy a rendszer betartsa azt. A memória rendelkezésre állásának és a memóriakihasználtság elkerülésének érdekében a MIN_MEMORY_PERCENT és a MAX_MEMORY_PERCENT értékeinek meg kell egyeznie. Lásd Memóriaoptimalizált táblákhoz és indexekhez rendelkezésre álló memória százalékos aránya alább a memóriaoptimalizált táblákhoz rendelkezésre álló memória százalékos arányát a lekötött memória mennyisége alapján.
Kérjük, tekintse meg a ajánlott eljárásokat, különösen a In-Memory OLTP használatát virtuális gép környezetben, további információért, hogy hogyan kell dolgozni ilyen környezetben.
Az alábbi Transact-SQL kód létrehoz egy Pool_IMOLTP nevű erőforráskészletet, amelynek a memória fele elérhető a számára. A Resource Governor újrakonfigurálásra kerül, hogy magában foglalja a Pool_IMOLTP-t, miután a készlet létre lett hozva.
-- set MIN_MEMORY_PERCENT and MAX_MEMORY_PERCENT to the same value
CREATE RESOURCE POOL Pool_IMOLTP
WITH
( MIN_MEMORY_PERCENT = 63,
MAX_MEMORY_PERCENT = 63 );
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Az adatbázis csatlakoztatása a gyűjteményhez
A sp_xtp_bind_db_resource_pool rendszerfüggvény használatával kösse az adatbázist az erőforráskészlethez. A függvény két paramétert vesz fel: az adatbázis nevét és az erőforráskészlet nevét.
Az alábbi Transact-SQL az IMOLTP_DB adatbázis kapcsolását határozza meg az erőforráskészlethez Pool_IMOLTP. A kötés csak akkor lép érvénybe, ha online állapotba nem hozza az adatbázist.
EXEC sp_xtp_bind_db_resource_pool 'IMOLTP_DB', 'Pool_IMOLTP'
GO
A rendszerfüggvény sp_xtp_bind_db_resource_pool két sztringparamétert vesz fel: database_name és pool_name.
A kötés megerősítése
Erősítse meg a kötést, az IMOLTP_DB erőforráskészlet azonosítóját megjegyezve. Nem lehet NULL.
SELECT d.database_id, d.name, d.resource_pool_id
FROM sys.databases d
GO
A kötés érvénybe léptetése
A kötés érvénybe lépéséhez offline állapotba kell helyeznie az adatbázist, és vissza kell kapcsolódnia az erőforráskészlethez. Ha az adatbázis korábban egy másik készlethez volt kötve, ez eltávolítja a lefoglalt memóriát az előző erőforráskészletből, valamint a memóriaoptimalizált táblához tartozó memóriafoglalásokat, és az indexek mostantól az adatbázishoz újonnan kötött erőforráskészletből származnak.
USE master
GO
ALTER DATABASE IMOLTP_DB SET OFFLINE
GO
ALTER DATABASE IMOLTP_DB SET ONLINE
GO
USE IMOLTP_DB
GO
Most pedig az adatbázis az erőforráskészlethez van kötve.
A MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT értékek módosítása egy meglévő készletben
Ha további memóriát ad hozzá a kiszolgálóhoz, vagy a memóriaoptimalizált táblák változásaihoz szükséges memóriamennyiséget, előfordulhat, hogy módosítania kell a MIN_MEMORY_PERCENT és a MAX_MEMORY_PERCENT értékét. Az alábbi lépések bemutatják, hogyan módosíthatja az erőforráskészlet MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT értékét. A MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT használható értékekről az alábbi szakaszban olvashat. További információért tekintse meg az ajánlott eljárásokat: Az In-Memory OLTP használata virtuálisgép-környezetben.
A
ALTER RESOURCE POOLhasználatával módosíthatja MIN_MEMORY_PERCENT és MAX_MEMORY_PERCENT értékét is.A
ALTER RESOURCE GOVERNORhasználatával konfigurálja újra az erőforrás-kormányzót az új értékekkel.
mintakód
ALTER RESOURCE POOL Pool_IMOLTP
WITH
( MIN_MEMORY_PERCENT = 70,
MAX_MEMORY_PERCENT = 70 )
GO
-- reconfigure the Resource Governor
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Memória-optimalizált táblákhoz és indexekhez rendelkezésre álló memória százalékos aránya
Ha egy adatbázist memóriaoptimalizált táblákkal és SQL Server-számítási feladatokkal rendel ugyanahhoz az erőforráskészlethez, a Resource Governor beállít egy belső küszöbértéket In-Memory OLTP-használathoz, hogy a készlet felhasználói ne ütközhessenek a készlet használatával. Általánosságban elmondható, hogy az In-Memory OLTP-használat küszöbértéke a pool körülbelül 80%. Az alábbi táblázat a különböző memóriaméretek tényleges küszöbértékeit mutatja be.
Ha dedikált erőforráskészletet hoz létre az In-Memory OLTP-adatbázishoz, meg kell becsülnie, hogy mennyi fizikai memóriára van szüksége a memóriában lévő táblákhoz a sorverziók és az adatnövekedés elszámolása után. Miután megbecsülte a szükséges memóriát, létre kell hoznia egy erőforráskészletet az SQL-példány véglegesítési célmemóriának egy százalékával a DMV sys.dm_os_sys_info"committed_target_kb" oszlopában látható módon. Létrehozhat például egy P1 erőforráskészletet, amely 40% a példány számára elérhető teljes memóriamennyiségből. Ebből a 40%-ból a In-Memory OLTP motor kevesebb százalékot kap a In-Memory OLTP-adatok tárolásához. Ez annak érdekében történik, hogy In-Memory OLTP ne használja fel a készlet összes memóriáját. A kisebb százalékos érték a célként lekötött memória függvényétől függ. Az alábbi táblázat az OOM-hiba felmerülése előtt In-Memory (névvel ellátott vagy alapértelmezett) erőforráskészlet OLTP-adatbázisának rendelkezésére álló memóriát ismerteti.
| Allokált célmemória | Memóriabeli táblákhoz elérhető százalék |
|---|---|
| <= 8 GB | 70% |
| <= 16 GB | 75% |
| <= 32 GB | 80% |
| <= 96 GB | 85% |
| >96 GB | 90% |
Ha például a "lekötött célmemória" 100 GB, és megbecsüli, hogy a memóriaoptimalizált tábláknak és indexeknek 60 GB memóriára van szükségük, ezután létrehozhat egy erőforráskészletet MAX_MEMORY_PERCENT = 67 (60 GB szükséges / 0,90 = 66,667 GB - kerekíthet fel 67 GB-ra; 67 GB / 100 GB telepítve = 67%) annak érdekében, hogy az In-Memory OLTP-objektumok rendelkeznek a szükséges 60 GB-tal.
Ha egy adatbázist egy elnevezett erőforráskészlethez kötöttek, az alábbi lekérdezéssel megtekintheti a különböző erőforráskészletek memóriafoglalásait.
SELECT pool_id
, Name
, min_memory_percent
, max_memory_percent
, max_memory_kb/1024 AS max_memory_mb
, used_memory_kb/1024 AS used_memory_mb
, target_memory_kb/1024 AS target_memory_mb
FROM sys.dm_resource_governor_resource_pools
Ez a mintakimenet azt mutatja, hogy a memóriaoptimalizált objektumok által felvett memória 1356 MB a PoolIMOLTP erőforráskészletben, amelynek felső határa 2307 MB. Ez a felső korlát szabályozza a készlethez hozzárendelt felhasználó- és rendszermemória-optimalizált objektumok által igénybe vehető teljes memóriát.
mintakimeneti
Ez a kimenet a fent létrehozott adatbázisból és táblákból származik.
pool_id Name min_memory_percent max_memory_percent max_memory_mb used_memory_mb target_memory_mb
----------- ----------- ------------------ ------------------ ------------- -------------- ----------------
1 internal 0 100 3845 125 3845
2 default 0 100 3845 32 3845
259 Pool_IMOLTP 0 100 3845 1356 2307
További információ: sys.dm_resource_governor_resource_pools (Transact-SQL).
Ha nem egy elnevezett erőforráskészlethez köti az adatbázist, az az "alapértelmezett" készlethez van kötve. Mivel az SQL Server az alapértelmezett erőforráskészletet használja a legtöbb más foglaláshoz, nem fogja tudni pontosan monitorozni a memóriaoptimalizált táblák által felhasznált memóriát a DMV sys.dm_resource_governor_resource_pools használatával a fontos adatbázis számára.
Lásd még:
sys.sp_xtp_bind_db_resource_pool (Transact-SQL)
sys.sp_xtp_unbind_db_resource_pool (Transact-SQL)
Erőforrás-kezelő
Erőforrás-korlátozó erőforráskészlet
Erőforráskészlet létrehozása
Erőforráskészlet beállításainak módosítása
Erőforráskészlet törlése