mysql_connect VS mysql_pconnect
J'ai ce doute, j'ai cherché sur le web et les réponses semblent être diversifiée. Est-il préférable d'utiliser mysql_pconnect sur mysql_connect lors de la connexion à une base de données via PHP? J'ai lu que pconnect des échelles beaucoup mieux, mais d'un autre côté, étant une connexion persistante... avoir 10 000 connexions en même temps, tous les persistants, ne semble pas évolutive pour moi.
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Les connexions persistantes ne devrait pas être nécessaire pour MySQL. Dans d'autres bases de données (Oracle), d'une connexion est coûteux et prend du temps, donc si vous pouvez ré-utiliser une connexion, c'est une grande victoire. Mais ces marques de base de données offre de regroupement de connexion, ce qui résout le problème dans une meilleure façon.
D'une connexion à une base de données MySQL est rapide par rapport à ceux d'autres marques, donc utiliser des connexions persistantes donne proportionnellement moins d'avantages pour MySQL que ce serait pour une autre marque de base de données.
Les connexions persistantes ont un inconvénient aussi. Le serveur de base de données alloue des ressources à chaque connexion, si les connexions sont nécessaires ou pas. Donc, vous voyez beaucoup de gaspillage de ressources pour pas de sens si les connexions sont en veille. Je ne sais pas si vous arriverez à 10 000 connexions inactives, mais même un couple de centaines de qui est coûteux.
Connexions de l'état, et il serait inapproprié pour une des requêtes PHP "hériter" de l'information à partir d'une session déjà utilisé par un autre PHP demande. Par exemple, les tables temporaires et variables utilisateur sont normalement nettoyé comme une fermeture de la connexion, mais pas si vous utilisez des connexions persistantes. De la même manière en fonction de la session des paramètres comme le jeu de caractères et collation. Aussi,
LAST_INSERT_ID()
ferait rapport à l'id de la dernière génération au cours de la session, même si c'était lors d'une avant PHP demande.Pour MySQL au moins, la baisse des connexions persistantes, probablement l'emportent sur les avantages. Et il y a les autres, de meilleures techniques pour atteindre une haute évolutivité.
Mise À Jour Mars 2014:
MySQL vitesse de connexion a toujours été faible par rapport à d'autres marques de SGBDR, mais c'est encore mieux.
Voir http://mysqlserverteam.com/improving-connectdisconnect-performance/
Lire le blog pour plus de détails et la vitesse des comparaisons.
Fondamentalement, vous devez équilibrer le coût de la création de connexions versus maintien de connexions. Même si MySQL est très rapide à la configuration d'une nouvelle connexion, il coûte encore -- au fil du temps, et dans la configuration TCP/IP de votre serveur web. Ceci est visible sur un haut assez de trafic de site. Malheureusement, PHP n'a pas de commandes sur la persistance des connexions. Donc la réponse est de réduire le délai d'inactivité dans MySQL un long chemin (comme jusqu'à 20 secondes), et pour le fil, taille de la mémoire cache. Ensemble, cela fonctionne, en général remarquablement bien.
Sur le revers de la médaille, votre application doit respecter l'état de la connexion. Il est préférable si elle ne fait aucune hypothèse sur l'état de la session. Si vous utilisez des tables temporaires, puis en utilisant le CRÉER SI il n'EXISTE PAS encore et TRUNCATE TABLE qui aide beaucoup, comme le fait de les nommer de manière unique (tels que notamment en tant que nom d'utilisateur). Les Transactions sont peu plus problématique; mais votre code peut toujours faire de la RESTAURATION en haut, juste au cas où.
mysqli.max_persistent
qui est de la taille maximale du pool de connexion à l'instance de PHP. Il n'y a pas une valeur en PHP pour le calendrier de connexions.Il est très peu probable que vous allez atteindre 10000 connexions. De toute façon, aller à la source officielle. (L'emphase est mienne).
mysql_connect()
etmysql_pconnect()
tous les deux travaillent pour la connexion de base de données, mais avec peu de différence. Dansmysql_pconnect()
,p
signifie la persistance de la connexion.Lorsque nous sommes à l'aide de
mysql_connect()
fonction, c'est à chaque fois l'ouverture et la fermeture de la connexion de base de données, en fonction de la demande.Mais dans le cas de
mysql_pconnect()
fonction:Tout d'abord, lors de la connexion, la fonction serait d'essayer de trouver un (persistant) connexion qui existe déjà avec le même hôte, nom d'utilisateur et mot de passe. Si l'on est trouvé, un identifiant est retourné au lieu d'ouvrir une nouvelle connexion.
Deuxièmement, la connexion à SQL server ne sera pas fermé lors de l'exécution du script se termine. Au lieu de cela, la connexion reste ouverte pour une utilisation future (
mysql_close()
ne ferme pas la connexion est établie parmysql_pconnect()
).mysql_pconncet()
est utile lorsque vous avez beaucoup de traffice sur votre site. À l'époque, pour chaque demande, il ne sera pas ouvrir une connexion, mais allons prendre à partir de la piscine. Cela va augmenter l'efficacité de votre site. Mais pour un usage général mysql_connect() est la meilleure.MYSQL_CONNECT()
1.mysql_connect peut être utilisé pour fermer la connexion.C'est à chaque fois l'ouverture et la fermeture de la connexion de base de données, en fonction de la demande .
2.Ici, la base de données est ouverte chaque fois que la page est chargée dans MYSQL connect
3.Lorsque la page est chargée, la base de données est chargé à chaque fois que
4.Il est utilisé pour fermer la connexion
Exemple:
Description:
de l'hôte: Spécifie un nom d'hôte ou une adresse IP comme localhost.
mysql_user: Spécifie le nom d'utilisateur MySQL
mysql_password: Spécifie le mot de passe MySQL
MYSQL_PCONNECT()
1.Nous utilisons le mysql_pconncet(), il tente d'abord de trouver un ouvert de connexion persistante.
2.Le mysql_pconncet() ouvre persistant connexion
3.Le mysql_pconnect() ne prend pas en charge la connexion étroite
4.mysql_pconnect() ne peut pas fermer la connexion. Ici ouvrir une persistant de connexion à la base de données
5.Ici, la base de données n'a pas besoin d'être connecté à chaque fois.
6.La base de données n'a pas besoin d'être connecté à chaque fois, dans mysql_pconncet().
plus de détails:http://prittytimes.com/difference-between-mysql_connect-and-mysql_pconnect/