sql >> Database >  >> RDS >> Oracle

Async I/O-intensieve code werkt langzamer dan niet-async, waarom?

De asynchrone versie zal altijd langzamer zijn dan de synchrone versie wanneer er geen gelijktijdigheid is. Het doet allemaal hetzelfde werk als de niet-asynchrone versie, maar met een kleine hoeveelheid overhead toegevoegd om de asynchronie te beheren.

Asynchronie is voordelig, met betrekking tot prestaties, door verbeterde beschikbaarheid mogelijk te maken. Elk individueel verzoek zal langzamer zijn, maar als u 1000 verzoeken tegelijkertijd doet, kan de asynchrone implementatie ze allemaal sneller afhandelen (tenminste in bepaalde omstandigheden).

Dit gebeurt omdat de asynchrone oplossing toestaat dat de thread die is toegewezen om het verzoek af te handelen, teruggaat naar de pool en andere verzoeken afhandelt, terwijl de synchrone oplossing de thread dwingt om daar te zitten en niets te doen terwijl het wacht tot de asynchrone bewerking is voltooid. Er is overhead bij het structureren van het programma op een manier die het mogelijk maakt de thread vrij te maken om ander werk te doen, maar het voordeel is dat die thread ander werk kan gaan doen. In je programma is er geen ander werk voor de thread om te doen, dus het wordt een nettoverlies.



  1. Minimale logboekregistratie met INSERT...SELECT in lege geclusterde tabellen

  2. Hoe de ODP.NET-verbindingspool op verbindingsfouten wissen?

  3. PostgreSQL kan geen transacties beginnen/beëindigen in PL/pgSQL

  4. Hoe u SQL Server-taken migreert van de ene SQL Server-instantie naar de andere?