Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Managed Instance
De prestaties van een Service Broker-toepassing worden over het algemeen bepaald door twee factoren:
- Het aantal berichten dat binnen een opgegeven 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 windows-toepassingslogboek. Zie de volgende artikelen voor meer informatie:
- de aan Service Broker gerelateerde dynamische beheerweergaven (Transact-SQL)
- SQL Server, Broker Statistics-object
- Broker-gebeurteniscategorie
Een opgeslagen Service Broker-procedure afstemmen
Meestal 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 nog andere overwegingen.
Gebruik eerst de WAITFOR component. Berichten komen zelden op voorspelbare intervallen aan. Zelfs in een service waarbij berichten ongeveer dezelfde snelheid bereiken als de opgeslagen procedure de berichten verwerkt, kan het voorkomen dat er geen berichten beschikbaar zijn. Daarom moet de procedure een WAITFOR clausule gebruiken met een RECEIVE instructie of een GET CONVERSATION GROUP instructie. Zonder WAITFORworden deze instructies onmiddellijk geretourneerd wanneer er geen beschikbare berichten in de wachtrij staan. Afhankelijk van de implementatie van de opgeslagen procedure, kan de procedure vervolgens de instructie herhaald doorlopen en daardoor onnodig resources verbruiken, of kan de procedure stoppen om vervolgens kort daarna opnieuw te worden geactiveerd, waardoor meer resources worden verbruikt dan wanneer de procedure gewoon zou doorgaan.
U kunt de onvoorspelbaarheid in timing toestaan met behulp van de WAITFOR clausule met de RECEIVE of GET CONVERSATION GROUP instructie. 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 een 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 retentie van berichten wanneer voor uw toepassing de exacte verzonden en ontvangen berichten zijn 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 ondervinden.
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.