web-dev-qa-db-fra.com

à quoi sert l'option pool dans database.yml

Les options les plus utilisées dans database.yml sont les suivantes:

adapter
encoding
database
pool
username
password
socket
Host
port
timeout

Je connais l'utilisation de la plupart des éléments ci-dessus, mais la piscine. Je veux donc savoir à quoi sert l'option pool dans database.yml ou il y a tout autre paramètre que nous devons définir pour l'application ayant un trafic très important.

39
Salil

Il définit le nombre de connexions possibles par processus Ruby. Donc, si vous utilisez votre application Rails, ou si vous utilisez les transactions de manière excessive. Les limites ici dépendent de votre configuration. Considérez ceci:

  • 50 Ruby processus
  • chacun avec 100 fils
  • un mysql avec un paramétrage de 1000 connexions simultanées

il est donc logique que chaque processus puisse ouvrir au plus 20 connexions (50 * 20 == 1000) à un moment donné. Vous devez donc définir la valeur pool sur 20 ou moins.

29
moritz

Pour quiconque cherche une réponse à cette question, l'idée de base semble être qu'une base de données ne peut prendre en charge que autant de connexions simultanées, il faut donc trouver un moyen de limiter les connexions ouvertes. L'attribut pool spécifie le nombre maximal de connexions pouvant être ouvertes à un moment donné.

Voir http://guides.rubyonrails.org/configuring.html#database-pool pour plus d'informations à ce sujet. Le guide ne dit pas explicitement que le pool est le nombre total de connexions pour l'application, mais c'est le sens que j'obtiens après l'avoir lu.

4
Corlew Solutions

pool est la configuration de la taille du pool de connexions, qui est 5 par défaut.

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html

1
xdazz