Position actuelle: Accueil> Derniers articles> connect_errno peut connect_errno m'aider à déterminer que la charge de base de données est trop élevée? Explication détaillée de la méthode de détection

connect_errno peut connect_errno m'aider à déterminer que la charge de base de données est trop élevée? Explication détaillée de la méthode de détection

M66 2025-07-10

1. Qu'est-ce que Connect_errno?

Dans PHP, Connect_errno est une propriété fournie par l'extension MySQLI qui obtient le nombre d'erreurs qui se produisent lors de la connexion à une base de données MySQL. Lorsque nous appelons mysqli_connect () ou mysqli :: __ construction () pour établir une connexion de base de données, Connect_errno attribuera automatiquement la valeur. Si la connexion réussit, la valeur de connect_errno sera 0; Si une erreur de connexion se produit, Connect_errno renvoie le code d'erreur correspondant.

Exemple de code:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Connectez-vous avec succès à la base de données!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans le code ci-dessus, si la connexion de la base de données est réussie, $ mysqli-> connect_errno sera 0. Si la connexion échoue, $ mysqli-> connect_errno renverra le code d'erreur spécifique.


2. Connect_errno et charge de base de données

Il convient de noter que Connect_errno ne fournira des informations que lorsque des problèmes se produisent pendant le processus de connexion de la base de données, par exemple:

  • Le serveur de base de données est inaccessible

  • Nom d'utilisateur ou mot de passe incorrect

  • La base de données n'existe pas

Cependant, Connect_errno ne nous aide pas directement à déterminer si la charge de base de données est trop élevée. La charge d'une base de données se manifeste généralement comme le temps de réponse de la requête lente, l'épuisement des pools de connexion ou les ressources de serveur excessives (telles que le CPU, la mémoire). Ces cas ne peuvent pas être détectés par Connect_errno .


3. Comment surveiller la charge de la base de données?

Pour surveiller la charge de la base de données, nous devons utiliser d'autres moyens, tels que:

3.1 Métriques de performance pour l'utilisation de MySQL

MySQL fournit certaines variables système et commandes qui peuvent nous aider à surveiller l'état de charge de la base de données:

  • Afficher le statut : cette commande peut afficher l'état en cours d'exécution de MySQL, y compris le nombre de connexions, les temps de requête, la requête lente, etc.

  • Afficher les variables : vérifiez les paramètres de la configuration MySQL, y compris le nombre maximal de connexions, l'utilisation de la mémoire, etc.

  • Afficher ProcessList : affiche la requête en cours d'exécution, ce qui peut nous aider à déterminer s'il existe des requêtes de longue durée qui provoquent une charge système excessive.

 <span><span><span class="hljs-keyword">SHOW</span></span><span> STATUS </span><span><span class="hljs-keyword">LIKE</span></span><span> </span><span><span class="hljs-string">'Threads_connected'</span></span><span>;
</span><span><span class="hljs-keyword">SHOW</span></span><span> STATUS </span><span><span class="hljs-keyword">LIKE</span></span><span> </span><span><span class="hljs-string">'Questions'</span></span><span>;
</span><span><span class="hljs-keyword">SHOW</span></span><span> PROCESSLIST;
</span></span>

Ces commandes peuvent nous aider à surveiller le nombre de connexions de base de données et de conditions de requête en temps réel, déterminant ainsi si la base de données est surchargée.

3.2 Utilisation d'outils de surveillance

Utilisez des outils de surveillance de la base de données professionnels, tels que Prometheus , Grafana , la surveillance et la gestion Percona (PMM) , pour analyser l'état de charge de la base de données plus approfondie. Ces outils peuvent fournir des graphiques détaillés et des fonctions d'alarme, vous permettant de savoir quand la charge de base de données est trop élevée et prendre des mesures en temps opportun.

3.3 Journal de requête lente de la base de données

L'activation des journaux de requête lents peut nous aider à identifier les requêtes consommer beaucoup de temps, ce qui peut entraîner la surcharge de la base de données. Vous pouvez activer les journaux de requête lents avec la configuration MySQL suivante:

 <span><span><span class="hljs-keyword">SET</span></span><span> </span><span><span class="hljs-keyword">GLOBAL</span></span><span> slow_query_log </span><span><span class="hljs-operator">=</span></span><span> </span><span><span class="hljs-string">'ON'</span></span><span>;
</span><span><span class="hljs-keyword">SET</span></span><span> </span><span><span class="hljs-keyword">GLOBAL</span></span><span> long_query_time </span><span><span class="hljs-operator">=</span></span><span> </span><span><span class="hljs-number">2</span></span><span>; </span><span><span class="hljs-comment">-- Définir la requête 2 La requête en secondes est une requête lente</span></span><span>
</span></span>

Les journaux de requête lents peuvent vous aider à découvrir des requêtes moins efficaces dans la base de données, optimisant ainsi ces requêtes ou structures de base de données et réduisant la charge de base de données.


4. Comment gérer une charge de base de données excessive?

Si la surveillance constate que la charge de base de données est trop élevée, les méthodes suivantes peuvent être prises pour optimiser et résoudre le problème:

4.1 Requête d'optimisation

Assurer l'efficacité des instructions de requête en analysant les journaux de requête lents, optimiser les requêtes SQL complexes et longs. Par exemple, utilisez des index appropriés pour éviter la numérisation complète de la table et utiliser les requêtes de pagination pour réduire la quantité de données par requête.

4.2 Ajout de pool de connexions de base de données

Si le nombre de connexions de base de données est la raison de la charge élevée, vous pouvez envisager d'augmenter la taille du pool de connexions de la base de données pour réduire la surcharge de connexion chaque fois que la base de données est demandée.

4.3 Équilibrage de charge

Dans le cas d'une concurrence élevée, les demandes de lecture et les demandes d'écriture peuvent être allouées à différents serveurs de base de données par le biais de séparation de lecture et d'écriture de la base de données, réduisant ainsi la charge sur un seul serveur de base de données.

4.4 Fissure horizontale à la base de données

Pour de très grandes bases de données, vous pouvez envisager une division horizontale de la base de données, diffuser les données en plusieurs instances de base de données et partager davantage la charge.