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

A gyorsítótár eltávolítása

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.

Képernyőkép a lekérdezés eredményeiről, beleértve a helytípust és a parancsot.

Íme egy példa egy olyan lekérdezés kimenetére, amelyen engedélyezve van az eredményhalmaz gyorsítótárazása.

Képernyőkép a lekérdezés eredményeiről, amelyen a * parancs van kiválasztva a [D W ResultCache D b] pont d b o kiemelésével.

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.