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.
Ha az eredményhalmaz gyorsítótárazása engedélyezve van, a dedikált SQL-készlet automatikusan gyorsítótárazza a lekérdezési eredményeket a felhasználói adatbázisban ismétlődő használatra. Ez lehetővé teszi, hogy a későbbi lekérdezésvégrehajtások közvetlenül a tárolt gyorsítótárból kapják meg az eredményeket, így nincs szükség újraszámításra. Az eredményhalmaz gyorsítótárazása javítja a lekérdezési teljesítményt, és csökkenti a számítási erőforrások használatát. Emellett a gyorsítótárazott eredménykészletet használó lekérdezések nem használnak egyidejűségi tárolóhelyeket, így nem számítanak bele a meglévő egyidejűségi korlátokba. A biztonság érdekében a felhasználók csak akkor férhetnek hozzá a gyorsítótárazott eredményekhez, ha ugyanazokkal az adathozzáférési engedélyekkel rendelkeznek, mint a gyorsítótárazott eredményeket létrehozó felhasználók. Az eredményhalmaz gyorsítótárazása alapértelmezésből kikapcsolva van az adatbázis és a munkamenet szintjén.
Megjegyzés:
Az eredményhalmaz gyorsítótárazását nem ajánlott együtt használni a DECRYPTBYKEY-vel. Ha ezt a titkosítási függvényt kell használni, győződjön meg arról, hogy az eredménykészlet gyorsítótárazása le van tiltva ( munkamenet- vagy adatbázisszinten) a végrehajtás időpontjában.
Fő parancsok
Kapcsolja be/ki egy felhasználói adatbázis eredménykészletének gyorsítótárazását
Egy munkamenet eredménykészletének gyorsítótárazásának be-/kikapcsolása
A gyorsítótárazott eredményhalmaz méretének ellenőrzése
Mi nincs a gyorsítótárban?
Ha az eredményhalmaz gyorsítótárazása be van kapcsolva egy adatbázis esetében, a rendszer az összes lekérdezéshez gyorsítótárazza az eredményeket, amíg meg nem telik a gyorsítótár, kivéve az alábbi lekérdezéseket:
- Olyan beépített függvényekkel vagy futtatókörnyezeti kifejezésekkel rendelkező lekérdezések, amelyek nem determinisztikusak akkor is, ha az alaptáblák adataiban vagy lekérdezéseiben nincs változás. Például: DateTime.Now(), GetDate().
- Felhasználó által definiált függvényeket használó lekérdezések
- Táblákat használó lekérdezések sorszintű biztonsággal
- 64 KB-nál nagyobb sorméretű adatokat visszaadó lekérdezések
- Nagyméretű lekérdezések (>10 GB)
Megjegyzés:
- Egyes nem determinisztikus függvények és futtatókörnyezeti kifejezések determinisztikusak lehetnek ugyanazon adatok ismétlődő lekérdezéseihez. Például ROW_NUMBER().
- Használja az ORDER BY klauzulát a lekérdezésben, ha a lekérdezés eredményhalmazában lévő sorok sorrendje fontos az alkalmazás logikájához.
- Ha az ORDER BY oszlopokban lévő adatok nem egyediek, az ORDER BY oszlopokban azonos értékeket tartalmazó sorokhoz nincs garantált sorsorrend, függetlenül attól, hogy az eredményhalmaz gyorsítótárazása engedélyezve vagy letiltva van-e.
Fontos
Az eredményhalmaz-gyorsítótár létrehozására és a gyorsítótárból való adatok lekérésére szolgáló műveletek egy dedikált SQL-készletpéldány vezérlőcsomópontján történnek. Ha az eredményhalmaz gyorsítótárazása be van kapcsolva, a nagy eredményhalmazt visszaadó lekérdezések (például >1 GB) fokozott korlátozást okozhatnak a vezérlőcsomóponton, és lelassíthatják a példány általános lekérdezési válaszidejét. Ezeket a lekérdezéseket gyakran használják az adatfeltárás vagy az ETL-műveletek során. A vezérlőcsomópont terhelésének elkerülése és a teljesítményproblémák elkerülése érdekében a felhasználóknak ki kell kapcsolniuk az eredményhalmaz gyorsítótárazását az adatbázison, mielőtt futtatják az ilyen típusú lekérdezéseket.
Futtassa ezt a lekérdezést, hogy meghatározza az eredményhalmaz gyorsítótárazási műveleteinek időtartamát egy adott lekérdezés esetében:
SELECT step_index, operation_type, location_type, status, total_elapsed_time, command
FROM sys.dm_pdw_request_steps
WHERE request_id = <'request_id'>;
Íme egy példakimenet egy olyan lekérdezéshez, amelynél az eredményhalmaz gyorsítótárazása ki van kapcsolva.
Íme egy példakimenet egy olyan lekérdezéshez, amely engedélyezve van az eredménykészlet gyorsítótárazásával.
Gyorsítótárazott eredmények használata esetén
A gyorsítótárazott eredményhalmazt a rendszer újra felhasználja egy lekérdezéshez, ha az alábbi követelmények mindegyike teljesül:
- A lekérdezést futtató felhasználó hozzáféréssel rendelkezik a lekérdezésben hivatkozott összes táblához.
- Pontos egyezés van az új lekérdezés és az eredményhalmaz gyorsítótárát létrehozó előző lekérdezés között.
- A gyorsítótárazott eredményhalmazt létrehozó táblákban nincs adat- vagy sémamódosítás.
Futtassa ezt a parancsot annak ellenőrzéséhez, hogy egy lekérdezést végrehajtottak-e az eredménygyorsítótár találatával vagy annak hiányával. A result_cache_hit oszlop 1-et ad vissza a gyorsítótár-találathoz, 0-t a gyorsítótár-kihagyáshoz, és negatív értékeket, amiért az eredményhalmaz gyorsítótárazását nem használták. Ellenőrizd a sys.dm_pdw_exec_requests a részletekért.
SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>
Gyorsítótárazott eredmények kezelése
Az eredményhalmaz gyorsítótárának maximális mérete adatbázisonként 1 TB. A gyorsítótárazott eredmények automatikusan érvénytelenítve lesznek a mögöttes lekérdezési adatok változásakor.
A gyorsítótár kiürítését a dedikált SQL-készlet kezeli automatikusan az ütemezés szerint:
- 48 óránként, ha az eredményhalmazt nem használták vagy érvénytelenítették.
- Amikor az eredményhalmaz gyorsítótára megközelíti a maximális méretet.
A felhasználók manuálisan kiüríthetik a teljes eredményhalmaz gyorsítótárát az alábbi lehetőségek egyikével:
- Kapcsoljuk ki az eredményhalmaz gyorsítótárazási funkcióját az adatbázisban.
- A DBCC DROPRESULTSETCACHE futtatása az adatbázishoz való csatlakozáskor
Az adatbázis szüneteltetése nem üríti ki a gyorsítótárazott eredményhalmazt.
Következő lépések
További fejlesztési tippekért tekintse meg a fejlesztés áttekintését.