sql >> Base de Datos >  >> RDS >> Oracle

El código intensivo de E/S asíncrona se ejecuta más lento que el no asíncrono, ¿por qué?

La versión asíncrona siempre será más lenta que la versión síncrona cuando no haya concurrencia. Está haciendo todo el mismo trabajo que la versión no asíncrona, pero con una pequeña cantidad de sobrecarga agregada para administrar la asincronía.

La asincronía es ventajosa, con respecto al rendimiento, al permitir una mejor disponibilidad. Cada solicitud individual será más lenta, pero si realiza 1000 solicitudes al mismo tiempo, la implementación asincrónica podrá manejarlas todas más rápidamente (al menos en ciertas circunstancias).

Esto sucede porque la solución asíncrona permite que el subproceso que se asignó para manejar la solicitud regrese al grupo y maneje otras solicitudes, mientras que la solución síncrona obliga al subproceso a sentarse allí y no hacer nada mientras espera que se complete la operación asíncrona. Hay una sobrecarga en la estructuración del programa de una manera que permite que el subproceso se libere para realizar otro trabajo, pero la ventaja es la capacidad de ese subproceso para realizar otro trabajo. En su programa no hay otro trabajo que hacer para el subproceso, por lo que termina siendo una pérdida neta.