/ / Erstellt Rails Verbindungspools zu MySQL? Ist es ein Single-Threaded-Design? - MySQL, Ruby-on-Schienen, Skalierbarkeit, Passagier

Erstellt Rails Verbindungspools zu MySQL? Ist es ein Single-Thread-Design? - mysql, ruby-on-rails, Skalierbarkeit, Beifahrer

Wie werden Verbindungen zu MySQL in Rails 3 gehandhabt?

Teilen mehrere Verbindungen zur Website dieselbe MySQL-Verbindung, oder nimmt sie eine Verbindung aus einem Verbindungspool und gibt sie wieder frei, sobald die Anforderung alle Verbindungen zu MySQL geschlossen hat?

Wenn es 10 Front-End-Server gibt, die alle auf einen einzelnen Datenbankserver treffen, gibt es hier Probleme?

Ich "benutze Phusion Passagier, wenn dies etwas bewirkt.

Antworten:

1 für die Antwort № 1

Der Arzt Antworten von selbst:

Ein Verbindungspool synchronisiert den Threadzugriff auf abegrenzte Anzahl von Datenbankverbindungen. Die Grundidee ist, dass jeder Thread ein a überprüft Datenbankverbindung aus dem Pool, verwendet diese Verbindung und prüft die Verbindung wieder in. ConnectionPool ist vollständig Thread-sicher und stellt sicher, dass eine Verbindung nicht von zwei Threads am verwendet werden kann gleichzeitig, solange der Vertrag von ConnectionPool korrekt befolgt wird. Es werden auch Fälle behandelt, in denen mehr Threads vorhanden sind als Verbindungen: wenn alle Verbindungen ausgecheckt wurden und ein Thread versucht trotzdem, eine Verbindung zu überprüfen, dann wartet ConnectionPool bis ein anderer Thread eine Verbindung eingecheckt hat.