Verwendung des Datenbankverbindungspools in Sequelize.js

9

Ich brauche etwas Klärung darüber, was der Pool ist und was er tut. Die Dokumentation sagt Sequelize wird einen Verbindungspool bei der Initialisierung einrichten, so dass Sie idealerweise nur eine Instanz pro Datenbank erstellen sollten.

%Vor%     
Mark A 20.02.2016, 16:02
quelle

3 Antworten

9

Wenn Ihre Anwendung Daten aus der Datenbank abrufen muss, erstellt sie eine Datenbankverbindung. Die Erstellung dieser Verbindung erfordert einige Zeit und Maschinenressourcen für Ihre Anwendung und die Datenbank. Viele Datenbankbibliotheken und ORMs werden versuchen, Verbindungen nach Möglichkeit wiederzuverwenden, so dass sie nicht den Overhead verursachen, diese DB-Verbindung immer wieder herzustellen. Die pool ist die Sammlung dieser gespeicherten, wiederverwendbaren Verbindungen, von denen Sequelize in Ihrem Fall ausgeht. Ihre Konfiguration von

%Vor%

gibt an, dass Ihr Pool Folgendes sollte:

  1. Nie mehr als fünf offene Verbindungen ( max: 5 )
  2. Mindestens null offene Verbindung haben / keine Mindestanzahl von Verbindungen aufrechterhalten ( min: 0 )
  3. Entfernen Sie eine Verbindung aus dem Pool, nachdem die Verbindung für 10 Sekunden inaktiv war (nicht verwendet) ( idle: 10000 )

tl; dr: Pools sind eine gute Sache, die bei der Datenbank- und Gesamtanwendungsleistung helfen, aber wenn Sie zu aggressiv mit Ihrer Poolkonfiguration umgehen, können Sie diese Gesamtleistung negativ beeinflussen.

    
P Ackerman 26.05.2017, 03:25
quelle
1

pool ist ein Fehler beim Löschen

Ich habe festgestellt, dass dieser Thread in meiner Suche nach einem Sequalize-Fehler meine node.js-App enthält: pool draining . Ich konnte es nicht für das Leben von mir herausfinden. Also für diejenigen, die in meine Fußstapfen treten:

Das Problem war, dass ich die Datenbank früher als ich dachte, mit dem Befehl sequelize.closeConnections() schließen würde. Aus irgendeinem Grund wurde anstelle eines Fehlers wie "Die Datenbank wurde geschlossen" der obskure Fehler "Pool wird gelöscht" angezeigt.

    
Chris Troutner 03.11.2017 17:07
quelle
0

Scheint, dass Sie versuchen können, pool auf false zu setzen, um zu vermeiden, dass der Pool-Bing erstellt wird. Hier ist die API-Detailtabelle: Ссылка

  

[Optionen.pool = {}]   Objekt   Sollte Sequelize verwenden einen Verbindungspool.   Der Standardwert ist

    
shershen 20.02.2016 16:38
quelle

Tags und Links