Teljesítmény-finomhangolás eredményhalmaz gyorsítótárazásával
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 az ismétlődő használat érdekében. Ez lehetővé teszi, hogy a későbbi lekérdezés-végrehajtások közvetlenül a megőrzött 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és szerint ki van kapcsolva az adatbázis és a munkamenet szintjén.
Megjegyzés
Az eredményhalmaz gyorsítótárazása nem használható a DECRYPTBYKEY billentyűvel együtt. Ha ezt a titkosítási függvényt kell használni, győződjön meg arról, hogy az eredményhalmaz gyorsítótárazása le van tiltva ( munkamenet- vagy adatbázisszinten) a végrehajtás időpontjában.
Fő parancsok
A felhasználói adatbázishoz tartozó eredményhalmazok gyorsítótárazásának be-/kikapcsolása
Munkamenet be-/KIKAPCSOLÁSA eredményhalmaz gyorsítótárazása
A gyorsítótárazott eredményhalmaz méretének ellenőrzése
Mi nem gyorsítótárazva?
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
- Sorszintű biztonsággal rendelkező táblákat használó lekérdezések
- 64 KB-nál nagyobb sorméretű adatokat visszaküldött lekérdezések
- Nagy méretű adatokat vissza adó 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().
- Akkor használja az ORDER BY függvényt a lekérdezésben, ha a lekérdezés eredményhalmazában lévő sorok sorrendje/sorrendje fontos az alkalmazáslogika szempontjából.
- Ha az ORDER BY oszlopokban szereplő adatok nem egyediek, az ORDER BY oszlopokban azonos értékekkel rendelkező sorok esetében nincs garantált sorsorrend, függetlenül attól, hogy az eredményhalmaz gyorsítótárazása engedélyezve van-e vagy le van tiltva.
Fontos
Az eredményhalmaz gyorsítótárának 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 vissza adó lekérdezések (például >1 GB) nagy mértékű szabályozást okozhatnak a vezérlőcsomóponton, és lelassíthatják a példány teljes lekérdezési válaszá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 az ilyen típusú lekérdezések futtatása előtt.
Futtassa ezt a lekérdezést a lekérdezés eredményhalmaz-gyorsítótárazási műveletei által igénybe vett ideig:
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élda egy olyan lekérdezés kimenetére, amely le van tiltva az eredményhalmaz gyorsítótárazásával.
Íme egy példa egy olyan lekérdezés kimenetére, amelyen engedélyezve van az eredményhalmaz gyorsítótárazása.
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 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árat létrehozó előző lekérdezés között.
- Azokban a táblákban, amelyekből a gyorsítótárazott eredményhalmaz létre lett hozva, nincsenek adatok vagy sémamódosítások.
Futtassa ezt a parancsot annak ellenőrzéséhez, hogy egy lekérdezés végrehajtása eredmény-gyorsítótárral történt-e. 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, amelyek miatt nem használták az eredményhalmaz gyorsítótárazását. Részletekért tekintse meg a sys.dm_pdw_exec_requests .
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énytelenednek 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 a következő ü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:
- Az adatbázis eredményhalmaz-gyorsítótárazási funkciójának kikapcsolása
- 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.