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:
  1. db2commexitRegister für eine neue Socketverbindung
  2. db2commexitRecv und db2commexitSend zur Authentifizierung (möglicherweise mehrmals)
  3. db2commexitUserIdentity für eine neue Verbindung
  4. db2commexitRecv und db2commexitSend zur 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.

  5. db2commexitDeregister zum Aufheben der Zuordnung zum Agenten

    Zu 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:

  6. db2commexitRegister für die Zuordnung eines Agenten
  7. db2commexitRecv und db2commexitSend zur Verarbeitung von SQL-Anforderungen des Clients (möglicherweise mehrmals)
  8. db2commexitDeregister zum Beenden der Socketverbindung
Hinweis: Für eine einzelne SQL-Verbindung gibt es mehrere Aufrufe an db2commexitRegister und db2commexitDeregister .