Apache -> MySQL plusieurs connexions contre une connexion

J’ai pensé, pourquoi Apache commence-t-il une nouvelle connexion au serveur MySQL pour chaque requête de page? Pourquoi ne garde-t-il pas une seule connexion ouverte à tout moment et envoie-t-elle toutes les requêtes SQL via cette seule connexion (évidemment avec l’ID client attaché à chaque demande)?

Cela réduit le temps de prise de contact et quelques autres avantages que je vois.

C’est comme twigr un ordinateur chaque fois que vous voulez l’utiliser. Pourquoi aller à la sortie chaque fois que vous pouvez simplement le laisser branché?

la raison est la suivante: c’est plus simple.

pour réutiliser des connexions, vous devez inventer et implémenter le regroupement de connexions. Cela ajoute une autre couche de code à développer, maintenir, etc.

De plus, les connexions groupées invitent toute une autre classe de bogues à surveiller pendant le développement de votre application. Par exemple, si vous définissez une variable utilisateur mais que l’utilisateur suivant de cette connexion passe par un chemin de code qui se twig en fonction de l’existence de cette variable ou non, cet utilisateur exécute le mauvais code. Parmi les autres problèmes, citons les tables temporaires, les blocages de transaction, les variables de session, etc. Tous ces éléments sont très difficiles à dupliquer car ils dépendent des actions ultérieures de deux utilisateurs différents qui semblent n’avoir aucun lien entre eux.

De plus, la surcharge de connexion sur une connexion mysql est minime. D’après mon expérience, le regroupement de connexions augmente considérablement le nombre d’utilisateurs qu’un serveur peut prendre en charge.

MySQL ne prend pas en charge plusieurs sessions sur une seule connexion.

Oracle , par exemple, permet cela et vous pouvez configurer Apache pour multiplexer plusieurs sessions logiques sur une seule connexion TCP .

Ceci est une limitation de MySQL , pas d’ Apache ou des langages de script.

Il y a des modules qui peuvent faire un pool de sessions:

  • Pré-créer un certain nombre de connexions
  • Choisissez une connexion gratuite à la demande
  • Créez des connexions supplémentaires si aucune connexion gratuite n’est disponible.

Parce que c’est le but du module mod_dbd .