Med en databasproxy i mitten finns det två separata ben till en "anslutning":
- Först finns det en anslutning från applikationen till proxyn. Det du kallade "applikationssidans pooling" är den här typen av anslutning. Eftersom det fortfarande finns omkostnader förknippade med att skapa en ny instans av den här typen av anslutning, är det förmodligen en bra idé att fortsätta använda en anslutningspool i din applikation.
- För det andra finns det en anslutning från proxyn till databasen. Dessa anslutningar hanteras av proxyn. Antalet anslutningar av denna typ styrs av en proxykonfiguration. Om du ställer in den här konfigurationen till 100 %, tillåter du proxyn att använda upp till databasens
max_connections
värde , och andra klienter kan svältas efter anslutningar.
Så när din applikation vill använda en anslutning måste den få en anslutning från sin lokala pool. Sedan måste proxyn para ihop det med en anslutning till databasen. Proxyn kommer att återanvända anslutningar till databasen där det är möjligt (denna teknik kallas också multiplexering ).
Eller, citerar de officiella dokumenten:"Du kan öppna många samtidiga anslutningar till proxyn, och proxyn håller ett mindre antal anslutningar öppna till DB-instansen eller klustret. Om du gör det minimerar du ytterligare minneskostnader för anslutningar på databasservern. Detta teknik minskar också risken för "för många anslutningar"-fel."