Delen via


Prestaties (Service Broker)

van toepassing op:SQL ServerAzure SQL Managed Instance

De prestaties van een Service Broker-toepassing worden over het algemeen bepaald door twee factoren:

  • Het aantal berichten dat binnen een bepaalde periode binnenkomt.

  • De snelheid waarmee de toepassing elk bericht verwerkt.

Het bewaken van deze twee factoren is de sleutel om inzicht te krijgen in de prestaties van de toepassing.

Service Broker biedt een set prestatiemeteritems die informatie bieden over de activiteiten ervan. Service Broker registreert ook ernstige fouten in het SQL Server-foutenlogboek en het gebeurtenislogboek van de Windows-toepassing. Zie de volgende artikelen voor meer informatie:

Een opgeslagen Service Broker-procedure afstemmen

Voor het grootste deel is het afstemmen van een opgeslagen procedure die gebruikmaakt van Service Broker niet anders dan het afstemmen van een andere opgeslagen procedure. Er zijn echter enkele aanvullende overwegingen.

Gebruik eerst de WAITFOR-clausule. Berichten komen zelden op voorspelbare intervallen aan. Zelfs in een service waarbij berichten ongeveer dezelfde snelheid bereiken als de opgeslagen procedure de berichten verwerkt, kunnen er momenten zijn waarop er geen berichten beschikbaar zijn. Daarom moet de procedure een WAITFOR-clause gebruiken met een RECEIVE-instructie of met een GET CONVERSATION GROUP-instructie. Zonder WAITFOR worden deze instructies onmiddellijk geretourneerd wanneer er geen beschikbare berichten in de wachtrij staan. Afhankelijk van de implementatie van de opgeslagen procedure, kan de procedure herhaaldelijk dezelfde instructie doorlopen en zo onnodig middelen verbruiken, of de procedure kan worden afgesloten om kort daarna opnieuw te worden geactiveerd, waarbij meer middelen worden verbruikt dan door gewoon door te blijven draaien.

U kunt de onvoorspelbaarheid in timing toestaan met behulp van de WAITFOR-component met de instructie RECEIVE of GET CONVERSATION GROUP. Als uw toepassing continu wordt uitgevoerd als achtergrondservice, geeft u geen time-out op in de WAITFOR-instructie. Als uw toepassing wordt geactiveerd door Service Broker of als geplande taak wordt uitgevoerd, geeft u een korte time-out op, bijvoorbeeld 500 milliseconden. Een toepassing die gebruikmaakt van de WAITFOR-instructie verwerkt onvoorspelbare intervallen tussen berichten. Een geactiveerde toepassing die na een korte time-out wordt afgesloten, verbruikt geen resources wanneer er geen berichten moeten worden verwerkt.

Service Broker garandeert dat slechts één exemplaar van een toepassing tegelijk berichten kan ontvangen voor gesprekken die een gespreksgroep-id delen. Ontwerp uw toepassingen om te profiteren van de vergrendeling van gespreksgroepen voor synchronisatie. Als uw toepassing de status onderhoudt, kunt u overwegen de gespreksgroep-id te gebruiken om de status voor het gesprek te identificeren. Meerdere berichten voor een gespreksgroep in dezelfde transactie verwerken. In het algemeen verwerkt u echter alleen berichten voor één gespreksgroep in een bepaalde transactie. Dit zorgt ervoor dat meer dan één exemplaar van de toepassing berichten kan verwerken, zelfs wanneer het aantal gespreksgroepen relatief klein is.

Vermijd bovendien het gebruik van berichtretentie. Het onderhouden van een afzonderlijke logboektabel die de belangrijkste informatie van een bericht opslaat, verbetert de prestaties. Gebruik alleen berichtretentie in het geval dat uw toepassing de exacte verzonden en ontvangen berichten vereist.

Beëindig vervolgens gesprekken wanneer de taak is voltooid. Service Broker onderhoudt de status voor elk actief gesprek. Hoewel de hoeveelheid status voor een bepaald gesprek klein is, kan een toepassing die gesprekken niet beëindigt, na verloop van tijd minder prestaties hebben.

Houd ten slotte transacties kort. Als het gesprekspatroon voor de service bijvoorbeeld een groot aantal berichten in dezelfde gespreksgroep omvat, kan het beperken van het aantal berichten dat in elke transactie wordt verwerkt, de totale doorvoer verbeteren.

Zie ook

Gespreksgroepvergrendelingen

berichtretentie