Intelligens gyorsítótár a Microsoft Fabricben

Az intelligens gyorsítótár funkció zökkenőmentesen működik a színfalak mögött, és gyorsítótárazza az adatokat, hogy felgyorsítsa az Apache Spark-feladatok végrehajtását a Microsoft Fabricben, amint az a OneLake vagy az Azure Data Lake Storage (ADLS) Gen2-tárolóból parancsikonokkal olvasható. Emellett automatikusan észleli a mögöttes fájlok módosításait, és automatikusan frissíti a gyorsítótárban lévő fájlokat, biztosítva a legfrissebb adatokat. Amikor a gyorsítótár mérete eléri a korlátot, a gyorsítótár automatikusan felszabadítja a legkevésbé olvasható adatokat, hogy helyet biztosítson a legutóbbi adatoknak. Ez a funkció a rendelkezésre álló gyorsítótárban tárolt fájlok későbbi olvasása esetén akár 60% is csökkentheti a teljes tulajdonlási költséget.

Amikor a Microsoft Fabric Apache Spark motorja lekérdez egy fájlt vagy táblát a lakehouse-ból, meghívja a távoli tárolót a mögöttes fájlok olvasásához. Minden olyan lekérdezési kérelem esetén, amely ugyanazokat az adatokat szeretné beolvasni, a Spark-motornak minden alkalommal távoli tárterületre kell hívást kezdeményeznie. Ez a redundáns folyamat késést ad a teljes feldolgozási időhöz. A Sparknak van egy gyorsítótárazási követelménye, amelyet manuálisan kell beállítania és felszabadítania a gyorsítótárat a késés minimalizálása és az általános teljesítmény javítása érdekében. Ez a követelmény azonban elavult adatokat eredményezhet, ha a mögöttes adatok megváltoznak.

Az intelligens gyorsítótár leegyszerűsíti a folyamatot azáltal, hogy automatikusan gyorsítótárazza az összes olvasást a lefoglalt gyorsítótár tárterületén minden Olyan Spark-csomóponton, ahol az adatfájlok gyorsítótárazva vannak az SSD-ben. Minden fájlkérés ellenőrzi, hogy a fájl megtalálható-e a helyi csomópont gyorsítótárában, és összehasonlítja a távoli tároló címkéjét annak megállapításához, hogy a fájl elavult-e. Ha a fájl nem létezik, vagy a fájl elavult, a Spark felolvassa a fájlt, és a gyorsítótárban tárolja. Amikor a gyorsítótár megtelik, a rendszer kiüríti a legrégebbi utolsó hozzáférési időt tartalmazó fájlt a gyorsítótárból, hogy újabb fájlokat engedélyezhessen.

Az intelligens gyorsítótár csomópontonként egyetlen gyorsítótár. Ha közepes méretű csomópontot használ, és ugyanazon a csomóponton két kis végrehajtóval fut, a két végrehajtó ugyanazt a gyorsítótárat használja. Emellett ez az adatfájlszintű gyorsítótárazás lehetővé teszi, hogy több lekérdezés is ugyanazt a gyorsítótárat használja, ha ugyanazokat az adatokat vagy adatfájlokat éri el.

Hogyan működik?

A Microsoft Fabricben az intelligens gyorsítótárazás alapértelmezés szerint minden Spark-készlet esetében engedélyezve van, 50%-os gyorsítótármérettel. Az elérhető tároló tényleges mérete és az egyes csomópontok gyorsítótármérete a csomópontcsaládtól és a csomópont méretétől függ.

Mikor érdemes intelligens gyorsítótárat használni?

Ez a funkció akkor előnyös, ha:

  • A számítási feladathoz többször is be kell olvasni ugyanazt a fájlt, és a fájlméret elfér a gyorsítótárban.

  • A számítási feladat Delta Lake-táblákat, Parquet- vagy CSV-fájlformátumokat használ.

Nem látja az intelligens gyorsítótár előnyeit, ha:

  • Olyan fájlt olvas, amely meghaladja a gyorsítótár méretét. Ha igen, a fájlok elejét kiürítheti, és a későbbi lekérdezések újra leküldhetik az adatokat a távoli tárolóból. Ebben az esetben nem látja az intelligens gyorsítótár előnyeit, és érdemes lehet növelni a gyorsítótár méretét és/vagy a csomópont méretét.

  • A számítási feladat nagy mennyiségű átrendezést igényel. Az intelligens gyorsítótár letiltása szabad területet szabadít fel, hogy a feladat ne hiúsuljon meg az elégtelen tárterület miatt.

Az intelligens gyorsítótár konfigurálása

Az intelligens gyorsítótárat letilthatja vagy engedélyezheti egy munkameneten belül, ha a következő kódot futtatja a jegyzetfüzetben, vagy beállítja ezt a konfigurációt a munkaterület vagy a környezeti elem szintjén.

SET spark.synapse.vegas.useCache = TRUE

Az intelligens gyorsítótár által alapértelmezetten használható lemezterület százalékos aránya 50%:

SET spark.synapse.vegas.cacheSize = 50