Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje tipy, jak dosáhnout lepšího výkonu propustnosti zápisu při načítání dat do služby Azure SQL Database pomocí Azure Stream Analytics.
Výstup SQL ve službě Azure Stream Analytics podporuje paralelní zápis jako možnost. Tato možnost umožňuje plně paralelní topologie úloh, kde několik výstupních oddílů paralelně zapisuje do cílové tabulky. Povolení této možnosti v Azure Stream Analytics ale nemusí být dostatečné k dosažení vyšší propustnosti, protože závisí výrazně na konfiguraci databáze a schématu tabulek. Volba indexů, clusteringového klíče, faktoru vyplnění indexu a komprese má vliv na dobu načítání tabulek. Další informace o optimalizaci databáze za účelem zlepšení výkonu dotazů a načítání na základě interních srovnávacích testů najdete v pokynech k výkonu služby SQL Database. Řazení zápisů není zaručeno při zápisu paralelně do služby SQL Database.
Tady jsou některé konfigurace v rámci každé služby, které můžou pomoct zlepšit celkovou propustnost vašeho řešení.
Azure Stream Analytics
Dědění dělení – Tato možnost konfigurace výstupu SQL umožňuje dědit schéma dělení předchozího kroku dotazu nebo vstupu. Při povolení této funkce u zápisu do diskové tabulky a využití plně paralelní topologie pro vaši úlohu můžete očekávat vyšší propustnost. K tomuto dělení už automaticky dochází u mnoha dalších výstupů. Uzamčení tabulky (TABLOCK) je také zakázáno pro hromadné vkládání provedené s touto možností.
Poznámka:
Pokud existuje více než 8 vstupních oddílů, nemusí být dědění schématu vstupního dělení vhodnou volbou. Tento horní limit byl pozorován v tabulce s jedním sloupcem identity a clusterovaným indexem. V tomto případě zvažte použití INTO 8 v dotazu k explicitní zadání počtu zapisovačů výstupu. V závislosti na schématu a výběru indexů se vaše pozorování můžou lišit.
Velikost dávky – Konfigurace výstupu SQL umožňuje zadat maximální velikost dávky ve výstupu SQL služby Azure Stream Analytics na základě povahy cílové tabulky nebo úlohy. Velikost dávky představuje maximální počet záznamů odesílaných při každé transakci hromadného vložení. V seskupených sloupcových úložištích indexu umožňují velikosti dávky kolem 100K lepší paralelizaci, minimalizaci logování a optimalizaci zamykání. V tabulkách založených na disku může být pro vaše řešení optimální 10 tisíc (výchozí) nebo nižší, protože větší velikosti dávek můžou aktivovat eskalaci zámku během hromadného vkládání.
Ladění vstupních zpráv – Pokud jste optimalizovali dělení na oddíly a velikost dávky, zvýšení počtu vstupních událostí na zprávu na oddíl pomáhá zvýšit propustnost zápisu. Ladění vstupních zpráv umožňuje velikost dávek v Azure Stream Analytics až do zadané velikosti dávky, čímž se zvyšuje propustnost. Toho lze dosáhnout pomocí komprese nebo zvýšením velikosti vstupních zpráv v EventHubu nebo objektu blob.
SQL Azure
Dělené tabulky a indexy – Použití dělené tabulky SQL a dělených indexů v tabulce se stejným sloupcem jako klíč oddílu (například PartitionId) může během zápisu výrazně snížit kolize mezi oddíly. V případě dělené tabulky budete muset vytvořit funkci oddílu a schéma oddílů v primární skupině souborů. Tím se také zvýší dostupnost stávajících dat při načítání nových dat. Limit vstupně-výstupních operací protokolu může být dosažen kvůli počtu oddílů, což lze vyřešit upgradem SKU.
Vyhněte se jedinečným porušením klíčů – Pokud se v protokolu aktivit Azure Stream Analytics zobrazí více varovných zpráv o porušeních klíče, ujistěte se, že vaše úloha není ovlivněna porušením jedinečných omezení, ke kterým může dojít během obnovení. Můžete se tomu vyhnout nastavením možnosti IGNORE_DUP_KEY na indexech.
Tabulky služby Azure Data Factory a tabulky v paměti
- In-Memory Tabulka jako dočasná tabulka – In-Memory tabulky umožňují velmi rychlé načítání dat, ale data se musí vejít do paměti. Srovnávací testy ukazují hromadné načítání z tabulky v paměti do tabulky založené na disku je přibližně 10krát rychlejší než přímé hromadné vkládání pomocí jednoho zapisovače do tabulky založené na disku se sloupcem identity a clusterovaným indexem. Pokud chcete využít tento výkon hromadného vkládání, nastavte úlohu kopírování pomocí služby Azure Data Factory , která kopíruje data z tabulky v paměti do tabulky založené na disku.
Zabránění úskalím výkonu
Hromadné vkládání dat je mnohem rychlejší než načítání dat s jedním vložením, protože se zabrání opakované režii při přenosu dat, analýze příkazu insert, spuštění příkazu a vystavení záznamu transakce. Místo toho se k streamování dat používá efektivnější cesta do modulu úložiště. Náklady na nastavení této cesty jsou však mnohem vyšší než jeden příkaz insert v tabulce založené na disku. Bod zlomu je obvykle přibližně 100 řádků, za který hromadné načítání je téměř vždy efektivnější.
Pokud je míra příchozích událostí nízká, může snadno vést k velikostem sad nižším než 100 řádků, což znamená, že hromadné zanášení je neefektivní a zabírá příliš mnoho místa na disku. Pokud chcete toto omezení obejít, můžete provést jednu z těchto akcí:
- Vytvořte INSTEAD OF trigger pro použití jednoduchého vložení pro každý řádek.
- Použijte dočasnou tabulku In-Memory, jak je popsáno v předchozí části.
K dalšímu takovému scénáři dochází při zápisu do neklastrovaného indexu columnstore (NCCI), kdy menší hromadné vkládání může vytvořit příliš mnoho segmentů, které mohou index poškodit. V tomto případě doporučujeme místo toho použít clusterovaný index Columnstore.
Shrnutí
Souhrnně řečeno, díky funkci rozděleného výstupu ve službě Azure Stream Analytics pro výstup SQL byste měli výrazně zlepšit propustnost při sladění paralelizace úlohy s dělenou tabulkou v SQL Azure. Využití služby Azure Data Factory k orchestraci přesunu dat z tabulky In-Memory do tabulek založených na disku může poskytnout řadu nárůstů propustnosti. Pokud je to možné, může být zlepšení hustoty zpráv také hlavním faktorem pro zlepšení celkové propustnosti.
Další kroky
- Vysvětlení výstupů z Azure Stream Analytics
- Výstup Azure Stream Analytics do služby Azure SQL Database
- Použití spravovaných identit pro přístup ke službě Azure SQL Database nebo Azure Synapse Analytics z úlohy Azure Stream Analytics
- Použití referenčních dat z SQL Database pro úlohu Azure Stream Analytics
- Aktualizace nebo sloučení záznamů ve službě Azure SQL Database pomocí Azure Functions
- Rychlý start: Vytvoření úlohy Stream Analytics pomocí webu Azure Portal