sql >> Databasteknik >  >> RDS >> Oracle

Async I/O-intensiv kod körs långsammare än icke-asynkroniserad, varför?

Den asynkrona versionen kommer alltid att vara långsammare än den synkrona versionen när det inte finns någon samtidighet. Den gör allt samma arbete som den icke-asynkroniserade versionen, men med en liten mängd extra kostnader för att hantera asynkroniseringen.

Asynkroni är fördelaktigt, med avseende på prestanda, genom att tillåta förbättrad tillgänglighet. Varje enskild begäran kommer att vara långsammare, men om du gör 1000 förfrågningar samtidigt, kommer den asynkrona implementeringen att kunna hantera dem alla snabbare (åtminstone under vissa omständigheter).

Detta händer eftersom den asynkrona lösningen tillåter tråden som tilldelades för att hantera begäran att gå tillbaka till poolen och hantera andra förfrågningar, medan den synkrona lösningen tvingar tråden att sitta där och inte göra någonting medan den väntar på att den asynkrona operationen ska slutföras. Det finns overhead i att strukturera programmet på ett sätt som gör att tråden kan frigöras för att göra annat arbete, men fördelen är den trådens förmåga att gå och göra annat arbete. I ditt program finns det inget annat arbete för tråden att göra, så det blir en nettoförlust.



  1. Hur man återställer förtroende för en främmande nyckelbegränsning i SQL Server (T-SQL-exempel)

  2. Hur infogar jag flera värden i en postgres-tabell samtidigt?

  3. Simulerar MySQL:s ORDER BY FIELD() i Postgresql

  4. Felvärde finns inte - postgresql INSERT INTO-problem