API-Aufrufreihenfolge - Verbindungskonzentrator
Dieses Szenario beschreibt die API-Aufrufreihenfolge bei Verwendung eines Verbindungskonzentrators. Mit der Funktion des Verbindungskonzentrators kann der Datenbankmanager erheblich mehr Clients verarbeiten, als koordinierende Agenten oder Threads zur Verfügung stehen. Diese API-Aufrufreihenfolge gilt für Bibliotheken für Kommunikationspufferexits.
Wenn ein Client eine UOW-Grenze erreicht und nicht sofort eine weitere Anforderung
sendet, werden die Client-Sockets in einen inaktiven Pool versetzt. Der Agent, der zuvor die
Clientanforderungen bearbeitet hat, fährt mit einem anderen Client fort. Sobald das inaktive
Socket Daten lesen muss, sucht ein Dispatcher dafür einen inaktiven
Agenten. Während des Bestehens einer SQL-Verbindung werden die Clientanforderungen möglicherweise
von mehreren Agenten bearbeitet. Jedes Mal, wenn das Socket in den inaktiven Pool versetzt oder
aus dem inaktiven Pool herausgenommen wird, werden
db2commexitDeregister und db2commexitRegister aufgerufen. Die folgenden Aufrufe werden ausgeführt:db2commexitRegisterfür eine neue Socketverbindungdb2commexitRecvunddb2commexitSendzur Authentifizierung (möglicherweise mehrmals)db2commexitUserIdentityfür eine neue Verbindungdb2commexitRecvunddb2commexitSendzur Verarbeitung von SQL-Anforderungen des Clients (möglicherweise mehrmals)Der Client sendet nicht umgehend eine weitere Anforderung und das Socket wird in einen inaktiven Pool versetzt.
db2commexitDeregisterzum Aufheben der Zuordnung zum AgentenZu einem späteren Zeitpunkt sendet der Client eine weitere Anforderung, woraufhin der Dispatcher einen inaktiven Agenten auswählt. Der Agent entspricht wahrscheinlich nicht dem Agenten, der zuvor verwendet wurde:
db2commexitRegisterfür die Zuordnung eines Agentendb2commexitRecvunddb2commexitSendzur Verarbeitung von SQL-Anforderungen des Clients (möglicherweise mehrmals)db2commexitDeregisterzum Beenden der Socketverbindung
Hinweis: Für eine einzelne SQL-Verbindung gibt es mehrere Aufrufe an
db2commexitRegister und db2commexitDeregister .