(PECL mysqlnd_ms >= 1.0.0)
mysqlnd_ms_get_stats — Retourne des statistiques quant à la distribution et la connexion de requêtes
Retourne un tableau de statistiques collectées par le plugin de réplication et d'équilibrage de charge.
La directive de configuration PHP
mysqlnd_ms.collect_statistics
contrôle la collection des statistiques. Elle est désactivée par défaut
pour des raisons de performance.
Le scope des statistiques est le processus PHP
.
Suivant votre modèle de déploiement, un processus
PHP
peut gérer une ou plusieurs demandes.
Les statistiques sont agrégées pour toutes les connexions et tous les gestionnaires
de stockage. Il n'est pas possible
de demander le nombre de requêtes émanant d'appels API
mysqli
, PDO_MySQL
ou
mysql
utilisées pour les valeurs agrégées.
Cette fonction ne contient aucun paramètre.
Retourne null
si la directive de configuration PHP
mysqlnd_ms.enable
a désactivé le plugin. Sinon, la fonction retourne un tableau de statistiques.
Tableau de statistiques
Statistique | Description | Version |
---|---|---|
use_slave
|
La sémantique de cette statistique a changé entre les versions 1.0.1 et 1.1.0.
La signification pour la version 1.0.1 est la suivante.
Nombre de requêtes considérées comme en lecture seule par
l'analyseur de requête interne. Ni les requêtes commençant par une
astuce SQL pour forcer l'utilisation d'un esclave, ni les requêtes
dirigées vers un esclave par une fonction de rappel définie par les
utilisateurs ne sont inclus dans ce chiffre. Le nombre total de requêtes
envoyées aux esclaves correspond à
PECL/mysqlnd_ms 1.1.0 introduit un nouveau concept de filtres chaînés.
Le statistique est maintenant définie par le filtre interne de balance
de charge. Avec la version 1.1.0, le filtre de balance de charge est
toujours le dernier dans un filtre chaîné, si utilisé. Dans les versions
futures, un filtre de balance de charge pourra être suivi d'autres filtres,
faisant ainsi une nouvelle fois évoluée la signification de cette statistique.
Si, dans le futur, un filtre de balance de charge est suivi par un
autre filtre, il ne sera plus garanti que la requête, qui incrémente
La signification pour la version 1.1.0 est la suivante. Nombre de
requêtes envoyées aux esclabes. Les requêtes dirigées vers un esclave
par un filtre utilisateur (une fonction de rappel définie par l'utilisateur)
ne sont pas incluses. Elles le seront par la statistique
|
Depuis la version 1.0.0. |
use_master
|
La sémantique de cette statistique a changée entre les versions 1.0.1 et 1.1.0.
La signification pour la version 1.0.1 est la suivante.
Nombre de requêtes considérées comme n'étant pas en lecture seule
par l'analyseur interne de requêtes. Ni les requêtes commençant par une
astuce SQL pour forcer l'utilisation d'un maître, ni les requêtes
redirigées vers un maître par une fonction de rappel définie par l'utilisateur
ne sont incluses dans cette statistique. Le nombre total de requêtes
envoyées vers le maître correspond à
PECL/mysqlnd_ms 1.1.0 introduit un nouveau concept de filtres chaînés. La
statistique est maintenant défini par le filtre de balance de charge
interne. Avec la version 1.1.0, le filtre de balance de charge est toujours
le dernier filtre d'un filtre chaîné, si utilisé. Dans les versions
futures, un filtre de balance de charge pourra être suivi par d'autres
filtres, faisant ainsi une nouvelle modification dans la signification
de cette statistique. Si, dans le futur, un filtre de balance de charge
est suivi par un autre filtre, il ne sera plus garanti que la requête,
qui incrémente
La signification pour la version 1.1.0 est la suivante. Nombre
de requêtes envoyées aux maîtres. Les requêtes dirigées vers un maître
par un filtre utilisateur (une fonction de rappel définie par l'utilisateur)
ne sont pas incluses. Mais elles le seront dans la statistique
|
Depuis la version 1.0.0. |
use_slave_guess
|
Nombre de requêtes dont l'analyseur de requêtes recommande d'envoyer
vers un esclave car la requête ne contient aucune astuce SQL pour forcer
l'utilisation d'un serveur en particulier. Cette recommandation
peut être modifiée par la suite. Il n'est pas garanti que la requête
soit bien exécutée sur un esclave. Cela signifie juste
que la fonction is_select interne a indiqué qu'un
esclave devrait être utilisé. Rapportez-vous à la fonction
mysqlnd_ms_query_is_select() de l'espace utilisateur.
|
Depuis la version 1.1.0. |
use_master_guess
|
Nombre de requêtes dont l'analyseur interne recommande d'envoyer
vers un maître car la requête ne contient aucune astuce SQL pour
forcer l'utilisation d'un serveur en particulier. Cette recommandation
peut être modifiée par la suite. Il n'est pas garanti que la requête
soit bien exécutée sur un esclave. Cela signifie juste
que la fonction is_select interne a indiqué qu'un
maître devrait être utilisé. Rapportez-vous à la fonction
mysqlnd_ms_query_is_select() de l'espace utilisateur.
|
Depuis la version 1.1.0. |
use_slave_sql_hint
|
Nombre de requêtes envoyées à un esclave par le fait que la requête commence par une astuce SQL pour forcer l'utilisation d'un esclave. | Depuis la version 1.0.0. |
use_master_sql_hint
|
Nombre de requêtes envoyées au maître par le fait que la requête commence par une astuce SQL pour forcer l'utilisation du maître. | Depuis la version 1.0.0. |
use_last_used_sql_hint
|
Nombre de requêtes envoyées au serveur qui a exécuté les précédentes requêtes, par le fait que la requête commence par une astuce SQL pour forcer l'utilisation du serveur précédemment utilisé. | Depuis 1.0.0. |
use_slave_callback
|
Nombre de requêtes envoyées à l'esclave en raison d'une fonction de rappel utilisateur choisissant un serveur esclave pour l'exécution des requêtes. | Depuis 1.0.0. |
use_master_callback
|
Nombre de requêtes envoyées au maître en raison d'une fonction de rappel utilisateur choisissant un serveur esclave pour l'exécution des requêtes. | Depuis 1.0.0. |
non_lazy_connections_slave_success
|
Nombre de connexions ouvertes avec succès vers un esclave
avec une configuration n'utilisant pas les
lazy connections .
Le nombre total de connexions ouvertes avec succès vers un
esclave correspond à
non_lazy_connections_slave_success +
lazy_connections_slave_success
|
Depuis 1.0.0. |
non_lazy_connections_slave_failure
|
Nombre de connexions échouées vers un esclave avec une
configuration n'utilisant pas les
lazy connections .
Le nombre total de connexions échouées vers un
esclave correspond à non_lazy_connections_slave_failure +
lazy_connections_slave_failure
|
Depuis 1.0.0. |
non_lazy_connections_master_success
|
Nombre de connexions ouvertes avec succès vers un maître
avec une configuration n'utilisant pas les
lazy connections .
Le nombre total de connexions ouvertes avec succès vers un
maître correspond à non_lazy_connections_master_success +
lazy_connections_master_success
|
Depuis 1.0.0. |
non_lazy_connections_master_failure
|
Nombre de connexions échouées vers un maître avec une
configuration n'utilisant pas les
lazy connections .
Le nombre total de connexions échouées vers un
maître correspond à non_lazy_connections_master_failure +
lazy_connections_master_failure
|
Depuis 1.0.0. |
lazy_connections_slave_success
|
Nombre de connexions ouvertes avec succès vers un esclave
avec une configuration utilisant les
lazy connections .
|
Depuis 1.0.0. |
lazy_connections_slave_failure
|
Nombre de connexions échouées vers un esclave
avec une configuration utilisant les
lazy connections .
|
Depuis 1.0.0. |
lazy_connections_master_success
|
Nombre de connexions ouvertes avec succès vers un maître
avec une configuration utilisant les
lazy connections .
|
Depuis 1.0.0. |
lazy_connections_master_failure
|
Nombre de connexions échouées vers un maître
avec une configuration utilisant les
lazy connections .
|
Depuis 1.0.0. |
trx_autocommit_on
|
Nombre d'activations du mode autocommit via des appels à
l'API. Peut être utilisé pour surveiller l'activité relative à la configuration
trx_stickiness
du plugin. Si, par exemple, vous souhaitez savoir si un appel particulier à l'API
invoque la fonction trx_autocommit() de la bibliothèque
mysqlnd , ce qui est une nécessité pour
trx_stickiness ,
vous pouvez appeler la fonction utilisation de l'API en question, et
vérifier si les statistiques ont été modifiées. Les statistiques
sont modifiées uniquement par la méthode trx_autocommit()
interne du plugin.
|
Depuis 1.0.0. |
trx_autocommit_off
|
Nombre de désactivations du mode autocommit via
des appels à l'API.
|
Depuis 1.0.0. |
trx_master_forced
|
Nombre de requêtes redirigées vers le maître alors que
trx_stickiness=master
et le mode autocommit sont désactivés.
|
Depuis 1.0.0. |
gtid_autocommit_injections_success
|
Noombre d'injections SQL avec succès en mode autocommit, faisant parti du plugin côté client de l'émulation de l'ID de transaction globale. | Depuis 1.2.0. |
gtid_autocommit_injections_failure
|
Nombre d'injections SQL échouées en mode autocommit, faisant parti du plugin côté client de l'émulation de l'ID de transaction globale. | Depuis 1.2.0. |
gtid_commit_injections_success
|
Nombre d'injections SQL avec succès en mode commit, faisant parti du plugin côté client de l'émulation de l'ID de transaction globale. | Depuis 1.2.0. |
gtid_commit_injections_failure
|
Nombre d'injections SQL échouées en mode commit, faisant parti du plugin côté client de l'émulation de l'ID de transaction globale. | Depuis 1.2.0. |
gtid_implicit_commit_injections_success
|
Nombre d'injections SQL avec succès lorsqu'un commit implicite
est détecté, faisant parti du plugins côté client de
l'émulation de l'ID de transaction globale.
Les commits implicites surviennent, par exemple, lorsque l'autocommit
a été désactivé, une requête est exécutée, puis, l'autocommit ré-activé.
Dans ce cas, la requête sera commité par le serveur et le SQL sera
injecté avant la ré-activation de l'autocommit. Voici d'autres séquences
pour lesquelles le commit est implicite : begin() ,
query() , begin() . Un second
appel à begin() va implicitement valider la transaction
commencée par le premier appel à begin() .
begin() correspond à des appels de la bibliothèques
internes, et non des appels de l'API utilisateur de PHP.
|
Depuis 1.2.0. |
gtid_implicit_commit_injections_failure
|
Nombre d'injections SQL échouées lorsque le commit implicite est détecté, faisant parti du plugins côté client de l'émulation de l'ID de transaction globale. Les commits implicites surviennent, par exemple, lorsque l'autocommit a été désactivé, une requête est exécutée, puis, l'autocommit ré-activé. Dans ce cas, la requête sera commité par le serveur et le SQL sera injecté avant la ré-activation de l'autocommit. | Depuis 1.2.0. |
transient_error_retries
|
Le nombre de tentative de l'opération avant qu'une erreur passagère ne
soit détectée. Voir aussi le fichier de configuration du plugin
transient_error .
|
Depuis 1.6.0. |
fabric_sharding_lookup_servers_success
|
Le nombre d'appels réussis à la procédure distante
sharding.lookup_servers à MySQL Fabric.
Un appel est considéré comme réussi si le plugin peut atteindre MySQL
Fabric et récupérer une réponse. La réponse en elle même peut ou non
être comprise par le plugin. Le succès correspond seulement au
transport réseau. Si la réponse n'a pas été comprise ou indique
une erreur valide, fabric_sharding_lookup_servers_xml_failure
sera incrémenté.
|
Depuis 1.6.0. |
fabric_sharding_lookup_servers_failure
|
Le nombre d'échec suite aux appels à la procédure distante
sharding.lookup_servers de MySQL Fabric.
Un appel à une procédure distante est considéré en échec s'il
y a une erreur réseau lors d'une connexion, d'une écriture ou
d'une lecture depuis MySQL Fabric.
|
Depuis 1.6.0. |
fabric_sharding_lookup_servers_time_total
|
Temps passé à se connecter, à écrire ou à lire depuis MySQL
Fabrich pendant l'appel à la procédure distante
sharding.lookup_servers . La valeur est agrégée
pour tous les appels. Le temps est mesuré en microsecondes.
|
Depuis 1.6.0. |
fabric_sharding_lookup_servers_bytes_total
|
Nombre total d'octets reçus depuis MySQL Fabric en réponse aux appels
à sharding.lookup_servers calls.
|
Depuis 1.6.0. |
fabric_sharding_lookup_servers_xml_failure
|
Le nombre de fois d'une réponse depuis MySQL Fabric aux appels à
sharding.lookup_servers n'a pas été compris.
Veuillez noter que l'implémentation expérimentale courrante ne
distingue pas les erreurs valides retournées, et les réponses
mal formées.
|
Depuis 1.6.0. |
xa_begin
|
Le nombre de transactions distribuées/XA qui ont été démarrées en utilisant la fonction mysqlnd_ms_xa_begin(). | Depuis 1.6.0. |
xa_commit_success
|
Le nombre de transactions distribuées/XA qui ont été validées avec succès en utilisant la fonction mysqlnd_ms_xa_commit(). | Depuis 1.6.0. |
xa_commit_failure
|
Le nombre de transactions distribuées/XA qui ont échoué lors d'une tentative de validation en utilisant la fonction mysqlnd_ms_xa_commit(). | Depuis 1.6.0. |
xa_rollback_success
|
Le nombre de transactions distribuées/XA qui ont été annulées avec succès en utilisant la fonction mysqlnd_ms_xa_rollback(). Ceci n'inclue pas les annulations implicites effectuées comme conséquence d'un échec lors de l'appel à la fonction mysqlnd_ms_xa_commit(). | Depuis 1.6.0. |
xa_rollback_failure
|
Le nombre de transactions distribuées/XA qui n'ont pas pu être annulées.
Ceci inclue les échecs de la fonction mysqlnd_ms_xa_rollback()
mais aussi, les échecs d'annulation lors de la fermeture d'une connexion,
si l'option rollback_on_close est définie. Voir aussi
l'option xa_rollback_on_close ci-dessous.
|
Depuis 1.6.0. |
xa_participants
|
Le nombre total de participants dans toutes les transactions XA commencées avec la fonction mysqlnd_ms_xa_begin(). | Depuis 1.6.0. |
xa_rollback_on_close
|
Le nombre de transactions XA qui ont été annulées implicitement lorsqu'une connexion
est fermée et que l'option rollback_on_close est définie.
Suivant l'implémentation de votre code, ceci peut représenter une faille sachant
que vous devriez préférer nettoyer les ressources explicitement.
|
Depuis 1.6.0. |
pool_masters_total
|
Nombre de serveurs maîtres (connexions) dans le pool de connexion interne. | Depuis 1.6.0. |
pool_slaves_total
|
Nombre de serveurs esclaves (connexions) dans le pool de connexion interne. | Depuis 1.6.0. |
pool_masters_active
|
Nombre de serveurs maîtres (connexions) depuis le pool de connexion interne qui sont actuellement en cours d'utilisation pour prendre une connexion. | Depuis 1.6.0. |
pool_slaves_active
|
Nombre de serveurs esclaves (connexions) depuis le pool de connexion interne qui sont actuellement en cours d'utilisation pour prendre une connexion. | Depuis 1.6.0. |
pool_updates
|
Le nombre de fois que la liste des connexions actives a été remplacée et qu'un nouveau jeu de maître et d'esclaves a été installé. | Depuis 1.6.0. |
pool_master_reactivated
|
Le nombre de ré-utilisation d'une connexion maître après avoir été ajoutée à la liste active. | Depuis 1.6.0. |
pool_slave_reactivated
|
Le nombre de ré-utilisation d'une connexion esclave après avoir été ajoutée à la liste active. | Depuis 1.6.0. |
Exemple #1 Exemple avec mysqlnd_ms_get_stats()
<?php
printf("mysqlnd_ms.enable = %d\n", ini_get("mysqlnd_ms.enable"));
printf("mysqlnd_ms.collect_statistics = %d\n", ini_get("mysqlnd_ms.collect_statistics"));
var_dump(mysqlnd_ms_get_stats());
?>
L'exemple ci-dessus va afficher :
mysqlnd_ms.enable = 1 mysqlnd_ms.collect_statistics = 1 array(26) { ["use_slave"]=> string(1) "0" ["use_master"]=> string(1) "0" ["use_slave_guess"]=> string(1) "0" ["use_master_guess"]=> string(1) "0" ["use_slave_sql_hint"]=> string(1) "0" ["use_master_sql_hint"]=> string(1) "0" ["use_last_used_sql_hint"]=> string(1) "0" ["use_slave_callback"]=> string(1) "0" ["use_master_callback"]=> string(1) "0" ["non_lazy_connections_slave_success"]=> string(1) "0" ["non_lazy_connections_slave_failure"]=> string(1) "0" ["non_lazy_connections_master_success"]=> string(1) "0" ["non_lazy_connections_master_failure"]=> string(1) "0" ["lazy_connections_slave_success"]=> string(1) "0" ["lazy_connections_slave_failure"]=> string(1) "0" ["lazy_connections_master_success"]=> string(1) "0" ["lazy_connections_master_failure"]=> string(1) "0" ["trx_autocommit_on"]=> string(1) "0" ["trx_autocommit_off"]=> string(1) "0" ["trx_master_forced"]=> string(1) "0" ["gtid_autocommit_injections_success"]=> string(1) "0" ["gtid_autocommit_injections_failure"]=> string(1) "0" ["gtid_commit_injections_success"]=> string(1) "0" ["gtid_commit_injections_failure"]=> string(1) "0" ["gtid_implicit_commit_injections_success"]=> string(1) "0" ["gtid_implicit_commit_injections_failure"]=> string(1) "0" ["transient_error_retries"]=> string(1) "0" }