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.
Ez a cikk a jobb írási teljesítmény elérésére vonatkozó tippeket ismerteti, amikor adatokat tölt be az Azure SQL Database-be az Azure Stream Analytics használatával.
Az Azure Stream Analytics SQL-kimenete támogatja a párhuzamos írást lehetőségként. Ez a beállítás teljesen párhuzamos feladattopológiákat tesz lehetővé, ahol több kimeneti partíció is párhuzamosan ír a céltáblába. Ennek a lehetőségnek az Azure Stream Analyticsben való engedélyezése azonban nem feltétlenül elegendő a nagyobb átviteli sebesség eléréséhez, mivel ez jelentősen függ az adatbázis konfigurációjától és a táblasémától. Az indexek, a fürtözési kulcs, az indexkitöltési tényező és a tömörítés kiválasztása hatással van a táblák betöltésének idejére. További információ arról, hogy hogyan optimalizálhatja az adatbázist a lekérdezési és terhelési teljesítmény belső teljesítménymutatókon alapuló javítására, tekintse meg az SQL Database teljesítményére vonatkozó útmutatást. Az írások sorrendje nincs garantálva, amikor párhuzamosan ír az SQL-adatbázisba.
Íme néhány konfiguráció az egyes szolgáltatásokban, amelyek segíthetnek a megoldás általános átviteli sebességének javításában.
Azure Stream Analytics
Particionálás öröklése – Ez az SQL kimeneti konfigurációs beállítás lehetővé teszi az előző lekérdezési lépés vagy bemenet particionálási sémájának öröklését. Ha ez aktiválva van, lemezalapú táblára ír, és teljes mértékben párhuzamos topológiával rendelkezik a feladathoz, jobb átviteli sebességre számíthat. Ez a particionálás már sok más kimenet esetében automatikusan megtörténik. A táblázatzárolás (TABLOCK) az ezzel a beállítással készült tömeges beszúrások esetében is le van tiltva.
Megjegyzés:
Ha 8-nál több bemeneti partíció van, előfordulhat, hogy a bemeneti particionálási séma öröklése nem megfelelő választás. Ez a felső korlát egy egyetlen identitásoszlopot és egy fürtözött indexet tartalmazó táblán volt megfigyelhető. Ebben az esetben fontolja meg az INTO 8 használatát a lekérdezésben a kimeneti írók számának explicit megadásához. A séma és az indexek kiválasztása alapján a megfigyelések eltérőek lehetnek.
Batch Size – Az SQL kimeneti konfigurációja lehetővé teszi a maximális kötegméret megadását egy Azure Stream Analytics SQL-kimenetben a céltábla/számítási feladat jellege alapján. A kötegméret az összes tömeges beszúrási tranzakcióval küldött rekordok maximális száma. A fürtözött oszlopcentrikus indexekben a kötegméretek körülbelül 100 ezren teszik lehetővé a párhuzamosítást, a minimális naplózást és a zárolási optimalizálást. A lemez alapú táblázatok esetén a 10K (alapértelmezett) vagy alacsonyabb érték optimális lehet a megoldáshoz, mivel a nagyobb köteg méret zároláseszkalációt válthat ki a tömeges beszúrások során.
Beviteli üzenet finomhangolása – Ha optimalizálta a particionálás örökölését és a kötegméretet, akkor a minden partíciónkénti üzenethez rendelt bemeneti események számának növelésével tovább fokozhatja az írási átviteli sebességet. A bemeneti üzenetek hangolása lehetővé teszi az Azure Stream Analytics számára, hogy a kötegméretek elérjék a megadott Batch Size-t, ezáltal javítva az adatátviteli teljesítményt. Ez a tömörítéssel vagy a bemeneti üzenetek méretének növelésével érhető el az EventHubon vagy a Blobban.
SQL Azure
Particionált táblák és indexek – A particionált SQL-tábla és a particionált indexek használata a táblán a partíciókulcs oszlopával (például PartitionId) jelentősen csökkentheti a partíciók közötti versengéseket az írások során. Particionált tábla esetén létre kell hoznia egy partíciófüggvényt és egy partíciós sémát az ELSŐDLEGES fájlcsoporton. Ez növeli a meglévő adatok rendelkezésre állását is, miközben új adatok betöltése folyamatban van. A napló I/O-korlátját a partíciók száma alapján lehet érvényesíteni, ami az SKU frissítésével növelhető.
Az egyedi kulcssértések elkerülése – Ha több kulcssértési figyelmeztető üzenetet kap az Azure Stream Analytics tevékenységnaplójában, győződjön meg arról, hogy a feladatra nem lesz hatással egyedi korlátozási szabálysértések, amelyek valószínűleg a helyreállítási esetek során következnek be. Ez elkerülhető az indexek IGNORE_DUP_KEY beállításával.
Azure Data Factory és In-Memory táblák
- In-Memory tábla ideiglenes táblaként – In-Memory táblák lehetővé teszik a nagy sebességű adatbetöltést, de az adatoknak el kell férnie a memóriában. A teljesítménymutatók azt mutatják, hogy a memóriabeli táblákból a lemezalapú táblákba való tömeges betöltés körülbelül tízszer gyorsabb, mint a közvetlen tömeges beszúrás egyetlen íróval a lemezalapú táblába egy identitásoszlop és egy fürtözött index használatával. A tömeges beszúrási teljesítmény kihasználásához állítson be egy másolási feladatot az Azure Data Factory használatával , amely adatokat másol a memóriában lévő táblából a lemezalapú táblába.
A teljesítménybeli buktatók elkerülése
Az adatok tömeges beszúrása sokkal gyorsabb, mint az adatok egyszeri beszúrással való betöltése, mivel az adatok átvitelének, a beszúrási utasítás elemzésének, az utasítás futtatásának és a tranzakciórekord kiadásának ismétlődő többletterhelése elkerülhető. Ehelyett hatékonyabb elérési utat használ a tárolómotorba az adatok streameléséhez. Az útvonal beállítási költsége viszont sokkal magasabb, mint egy lemezalapú táblában lévő egyetlen beszúrási utasítás. A töréspont általában 100 sor körül van, amelyen túl a tömeges betöltés szinte mindig hatékonyabb.
Ha a bejövő események száma alacsony, könnyen létrehozhat 100 sornál kisebb kötegméreteket, ami miatt a tömeges beszúrás nem hatékony, és túl sok lemezterületet használ. A korlátozás megkerüléséhez hajtsa végre az alábbi műveletek egyikét:
- Hozzon létre egy trigger HELYETT EGY EGYSZERŰ INSERT minden sorhoz.
- Használjon In-Memory ideiglenes táblát az előző szakaszban leírtak szerint.
Egy másik ilyen forgatókönyv akkor történik, amikor nem fürtözött oszlop-tároló indexbe (NCCI) írnak, ahol a kisebb tömeges beszúrások túl sok szegmenst hozhatnak létre, amelyek összeomlaszthatják az indexet. Ebben az esetben a javaslat a klaszterezett columnstore index használata.
Összefoglalás
Összefoglalva, az Azure Stream Analytics sql-kimenethez készült particionált kimeneti funkciójával a feladatnak az SQL Azure-ban particionált táblával való párhuzamosítása jelentős átviteli sebességet eredményez. Az Azure Data Factory használata az adatáthelyezés In-Memory táblából lemezalapú táblákba való vezényléséhez nagyságrendi átviteli sebességnövekedést adhat. Ha lehetséges, az üzenetsűrűség javítása is jelentős tényező lehet az általános átviteli sebesség javításában.
Következő lépések
- Az Azure Stream Analytics kimeneteinek ismertetése
- Azure Stream Analytics-kimenet az Azure SQL Database-be
- Felügyelt identitások használata az Azure SQL Database vagy az Azure Synapse Analytics eléréséhez egy Azure Stream Analytics-feladatból
- Referenciaadatok használata SQL Database-ből azure Stream Analytics-feladathoz
- Rekordok frissítése vagy egyesítése az Azure SQL Database-ben az Azure Functions használatával
- Rövid útmutató: Stream Analytics-feladat létrehozása az Azure Portal használatával