Sinks optimaliseren

Wanneer gegevensstromen schrijven naar sinks, vindt eventuele aangepaste partitionering direct vóór de schrijfbewerking plaats. Net als bij de bron is het raadzaam om in de meeste gevallen huidige partitionering te blijven gebruiken als de geselecteerde partitieoptie. Gepartitioneerde gegevens schrijven aanzienlijk sneller dan niet-gepartitioneerde gegevens, zelfs uw bestemming is niet gepartitioneerd. Hieronder ziet u de afzonderlijke overwegingen voor verschillende sinktypen.

Azure SQL Database sinks

Met Azure SQL Database moet de standaardpartitionering in de meeste gevallen werken. Er is een kans dat uw sink te veel partities heeft voor uw SQL database om te verwerken. Als u dit ondervindt, vermindert u het aantal partities dat wordt uitgevoerd door uw SQL Database sink.

Aanbevolen procedure voor het verwijderen van rijen in sink op basis van ontbrekende rijen in de bron

Hier volgt een video over het gebruik van gegevensstromen met bestaat, het wijzigen van rij- en sinktransformaties om dit algemene patroon te bereiken:

Impact van de verwerking van foutrijen op prestaties

Wanneer u foutrijafhandeling inschakelt ('doorgaan op fout') in de sinktransformatie, neemt de service een extra stap voordat de compatibele rijen naar uw doeltabel worden geschreven. Deze extra stap heeft een kleine prestatiestraf die in het bereik van 5% kan worden toegevoegd voor deze stap, waarbij er ook een extra kleine prestatietreffer wordt toegevoegd als u de optie instelt om ook de incompatibele rijen naar een logboekbestand te schrijven.

Indexen uitschakelen met behulp van een SQL Script

Het uitschakelen van indexen voordat een belasting in een SQL database kan de prestaties van het schrijven naar de tabel aanzienlijk verbeteren. Voer de onderstaande opdracht uit voordat u naar uw SQL sink schrijft.

ALTER INDEX ALL ON dbo.[Table Name] DISABLE

Nadat de schrijfbewerking is voltooid, bouwt u de indexen opnieuw op met behulp van de volgende opdracht:

ALTER INDEX ALL ON dbo.[Table Name] REBUILD

Deze kunnen beide worden uitgevoerd met behulp van pre- en post-SQL scripts binnen een Azure SQL DB- of Synapse-sink in toewijzingsgegevensstromen.

Disable indexes

Waarschuwing

Wanneer u indexen uitschakelt, wordt de gegevensstroom effectief beheerd door een database en zullen query's op dit moment waarschijnlijk niet slagen. Als gevolg hiervan worden veel ETL-taken midden in de nacht geactiveerd om dit conflict te voorkomen. Meer informatie over de beperkingen voor het uitschakelen van SQL indexen

Uw database omhoog schalen

Plan een grootte van uw bron en sink Azure SQL DB en DW voordat uw pijplijn wordt uitgevoerd om de doorvoer te verhogen en azure-beperking te minimaliseren zodra u de DTU-limieten hebt bereikt. Nadat de uitvoering van de pijplijn is voltooid, wijzigt u het formaat van uw databases terug naar de normale uitvoeringssnelheid.

Azure Synapse Analytics-sinks

Wanneer u naar Azure Synapse Analytics schrijft, moet u ervoor zorgen dat fasering inschakelen is ingesteld op waar. Hierdoor kan de service schrijven met behulp van de SQL COPY-opdracht waarmee de gegevens bulksgewijs worden geladen. U moet verwijzen naar een Azure Data Lake Storage gen2- of Azure Blob Storage-account voor het faseren van de gegevens bij het gebruik van fasering.

Behalve fasering zijn dezelfde best practices van toepassing op Azure Synapse Analytics als Azure SQL Database.

Sinks op basis van bestanden

Hoewel gegevensstromen verschillende bestandstypen ondersteunen, wordt de systeemeigen Parquet-indeling van Spark aanbevolen voor optimale lees- en schrijftijden.

Als de gegevens gelijkmatig worden gedistribueerd, is het gebruik van huidige partitionering de snelste partitioneringsoptie voor het schrijven van bestanden.

Opties voor bestandsnaam

Bij het schrijven van bestanden hebt u een keuze uit naamgevingsopties die elk een invloed hebben op de prestaties.

Sink options

Als u de optie Standaard selecteert, wordt het snelst geschreven. Elke partitie is gelijk aan een bestand met de standaardnaam van Spark. Dit is handig als u alleen maar leest uit de map met gegevens.

Als u een naamgevingspatroon instelt, wordt de naam van elk partitiebestand gewijzigd in een meer gebruiksvriendelijke naam. Deze bewerking vindt plaats na schrijven en is iets langzamer dan het kiezen van de standaardinstelling.

Met elke partitie kunt u elke afzonderlijke partitie handmatig een naam geven.

Als een kolom overeenkomt met de wijze waarop u de gegevens wilt uitvoeren, kunt u het bestand Naam selecteren als kolomgegevens. Hierdoor worden de gegevens opnieuw ingedeeld en kunnen de prestaties worden beïnvloed als de kolommen niet gelijkmatig zijn verdeeld.

Als een kolom overeenkomt met de wijze waarop u mapnamen wilt genereren, selecteert u De map Naam als kolomgegevens.

Uitvoer naar één bestand combineert alle gegevens in één partitie. Dit leidt tot lange schrijftijden, met name voor grote gegevenssets. Deze optie wordt sterk afgeraden, tenzij er een expliciete zakelijke reden is om deze te gebruiken.

Azure Cosmos DB-sinks

Bij het schrijven naar Azure Cosmos DB kan het wijzigen van de doorvoer en batchgrootte tijdens het uitvoeren van de gegevensstroom de prestaties verbeteren. Deze wijzigingen worden pas van kracht tijdens de uitvoering van de gegevensstroomactiviteit en worden na de conclusie terug naar de oorspronkelijke verzamelingsinstellingen.

Batchgrootte: Normaal gesproken is het voldoende om te beginnen met de standaard batchgrootte. Als u deze waarde verder wilt afstemmen, berekent u de ruwe objectgrootte van uw gegevens en zorgt u ervoor dat de objectgrootte * batchgrootte kleiner is dan 2 MB. Als dat zo is, kunt u de batchgrootte vergroten om betere doorvoer te krijgen.

Doorvoer: Stel hier een hogere doorvoerinstelling in zodat documenten sneller naar Azure Cosmos DB kunnen schrijven. Houd rekening met de hogere RU-kosten op basis van een instelling voor hoge doorvoer.

Budget voor schrijfdoorvoer: Gebruik een waarde die kleiner is dan het totale aantal RU's per minuut. Als u een gegevensstroom hebt met een groot aantal Spark-partities, staat het instellen van een budgetdoorvoer meer balans tussen deze partities toe.

Volgende stappen

Zie andere Gegevensstroom artikelen met betrekking tot prestaties: