Usando Dados Estatísticos
O Driver Nativo MySQL contém suporte para coleta de estatísticas sobre a comunicação entre o cliente e o servidor. As estatísticas recolhidas são de dois tipos principais:
Estatísticas de cliente
Estatísticas de conexão
Se extensão mysqli
estiver sendo utilizada, essas
estatísticas poderão ser obtidas através de duas chamadas de API:
Nota:
As estatísticas são agregadas entre todas as extensões que utilizam o Driver Nativo MySQL. Por exemplo, ao compilar
ext/mysql
eext/mysqli
no Driver Nativo MySQL, ambas as chamadas de função deext/mysql
eext/mysqli
mudará as estatísticas. Não há como saber o quanto uma determinada chamada de API de qualquer extensão que tenha sido compilada contra o Driver Nativo MySQL tenha impactado uma determinada estatística. Pode-se configurar o Driver MySQL PDO,ext/mysql
eext/mysqli
para opcionalmente utilizar o Driver Nativo MySQL. Ao fazer isso, todas as três extensões alterarão as estatísticas.
Acessando Estatísticas de Cliente
Para acessar as estatísticas do cliente, é necessário chamar mysqli_get_client_stats(). A chamada de função não requer nenhum parâmetro.
A função retorna uma matriz associativa que contém o nome da estatística como chave e os dados estatísticos como valor.
As estatísticas do cliente também podem ser acessadas chamando a função phpinfo().
Acessando Estatísticas de Conexão
Para acessar as estatísticas de conexão, é necessário chamar mysqli_get_connection_stats(). Isso usa o identificador de conexão do banco de dados como parâmetro.
A função retorna uma matriz associativa que contém o nome da estatística como chave e os dados estatísticos como valor.
Conjunto de Resultados com e sem Buffer
Os conjuntos de resultados podem ser armazenados em buffer ou sem buffer. Usando configurações padrão,
ext/mysql
e ext/mysqli
funcionam
com conjuntos de resultados armazenados em buffer para consultas normais (instruções não preparadas).
Os conjuntos de resultados armazenados em buffer são armazenados em cache no cliente. Após a execução
da consulta todos os resultados são buscados no servidor MySQL e armazenados em
cache no cliente. A grande vantagem dos conjuntos de resultados em buffer é
que eles permitem que o servidor libere todos os recursos alocados para um conjunto de
resultados, uma vez que os resultados tenham sido buscados pelo cliente.
Por outro lado, os conjuntos de resultados sem buffer são mantidos por muito mais tempo no
servidor. Se for desejado reduzir o consumo de memória no cliente, mas
aumentando a carga no servidor, use resultados sem buffer. Se for observada
uma carga alta no servidor e os números dos conjuntos de resultados sem buffer forem
altos, considere mover a carga para os clientes. Os clientes
normalmente escalam melhor que os servidores. Carga
não se refere
apenas a buffers de memória - o servidor também precisa manter outros
recursos abertos, por exemplo, identificadores de arquivos e threads, antes que um conjunto
de resultados possa ser liberado.
As instruções preparadas usam conjuntos de resultados sem buffer por padrão. Entretanto, pode-se usar mysqli_stmt_store_result() para habilitar conjuntos de resultados em buffer.
Estetísticas Retornadas pelo Driver Nativo MySQL
A tabela a seguir mostra uma lista de estatísticas retornadas pelas funções mysqli_get_client_stats() e mysqli_get_connection_stats().
Estatística | Escopo | Descrição | Notas |
---|---|---|---|
bytes_sent |
Conexão | Número de bytes enviados pelo PHP para o servidor MySQL | Pode ser usada para verificar a eficiência do protocolo de compressão |
bytes_received |
Conexão | Número de bytes recebidos do servidor MySQL | Pode ser usada para verificar a eficiência do protocolo de compressão |
packets_sent |
Conexão | Número de pacotes do protocolo Cliente-Servidor do MySQL enviados | Usada para depurar a implementação do protocolo Cliente-Servidor |
packets_received |
Conexão | Número de pacotes do protocolo Cliente-Servidor do MySQL recebidos | Usada para depurar a implementação do protocolo Cliente-Servidor |
protocol_overhead_in |
Conexão | Sobrecarga do protocolo Cliente-Servidor do MySQL em bytes para tráfego de entrada. Atualmente apenas o Cabeçalho do Pacote (4 bytes) é considerado sobrecarga. protocol_overhead_in = pacotes_recebidos * 4 | Usada para depurar a implementação do protocolo Cliente-Servidor |
protocol_overhead_out |
Conexão | Sobrecarga do protocolo Cliente-Servidor do MySQL em bytes para tráfego de saída. Atualmente apenas o Cabeçalho do Pacote (4 bytes) é considerado sobrecarga. protocol_overhead_out = pacotes_enviados * 4 | Usada para depurar a implementação do protocolo Cliente-Servidor |
bytes_received_ok_packet |
Conexão | Tamanho total de bytes de pacotes OK do protocolo Cliente-Servidor do MySQL recebidos. Pacotes OK podem conter uma mensagem de status. O comprimento da mensagem de status pode variar e, portanto, o tamanho de um pacote OK não é fixo. | Usado para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_ok |
Conexão | Número de pacotes OK recebidos pelo protocolo Cliente-Servidor do MySQL. | Usado para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
bytes_received_eof_packet |
Conexão | Tamanho total em bytes dos pacotes EOF do protocolo Cliente-Servidor do MySQL recebidos. O EOF pode variar em tamanho dependendo da versão do servidor. Além disso, o EOF pode transportar uma mensagem de erro. | Usado para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_eof |
Conexão | Número de pacotes EOF do protocolo Cliente-Servidor do MySQL. Tal como acontece com outras estatísticas de pacotes, o número de pacotes aumentará mesmo se o PHP não receber o pacote esperado, mas, por exemplo, uma mensagem de erro. | Usado para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
bytes_received_rset_header_packet |
Conexão | Tamanho total em bytes dos pacotes de cabeçalho do conjunto de resultados do protocolo
Cliente-Servidor do MySQL. O tamanho dos pacotes varia dependendo da carga
(LOAD LOCAL INFILE , INSERT ,
UPDATE , SELECT , mensagem de
erro). |
Usado para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_rset_header |
Conexão | Número de pacotes de cabeçalho do conjunto de resultados do protocolo Cliente-Servidor do MySQL. | Usado para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
bytes_received_rset_field_meta_packet |
Conexão | Tamanho total em bytes dos pacotes (informação de campo) dos metadados do conjunto de resultados do protocolo Cliente-Servidor do MySQL. Obviamente o tamanho varia com os campos do conjunto de resultados. O pacote também pode transportar um erro ou um pacote de EOF no caso de COM_LIST_FIELDS. | Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_rset_field_meta |
Conexão | Número de pacotes (informação de campo) dos metadados do conjunto de resultados do protocolo Cliente-Servidor do MySQL. | Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
bytes_received_rset_row_packet |
Conexão | Tamanho total em bytes dos pacotes de dados do conjunto de resultados do protocolo
Cliente-Servidor do MySQL. O pacote também pode transportar um erro ou um pacote de EOF.
Pode-se fazer engenharia reversa do número de erros e pacotes EOF
subtraindo rows_fetched_from_server_normal
e rows_fetched_from_server_ps de
bytes_received_rset_row_packet . |
Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_rset_row |
Conexão | Número de pacotes de dados do conjunto de resultados do protocolo Cliente-Servidor do MySQL e seu tamanho total em bytes. | Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
bytes_received_prepare_response_packet |
Conexão | Tamanho total em bytes dos pacotes OK para Inicialização de Instruções Preparadas do protocolo
Cliente-Servidor do MySQL.
O pacote também pode transportar um erro. O tamanho do pacote
depende da versão MySQL: 9 bytes com MySQL 4.1 e 12 bytes
a partir do MySQL 5.0. Não existe maneira segura de saber quantos erros
aconteceram. Pode ser possível inferir que um erro ocorreu se,
por exemplo, sempre se conectar ao MySQL 5.0 ou superior e
bytes_received_prepare_response_packet !=
packets_received_prepare_response * 12. Consulte
também ps_prepared_never_executed e
ps_prepared_once_executed . |
Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_prepare_response |
Conexão | Número de pacotes OK para Inicialização de Instruções Preparadas do protocolo Cliente-Servidor do MySQL. | Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
bytes_received_change_user_packet |
Conexão | Tamanho total em bytes dos pacotes COM_CHANGE_USER do protocolo Cliente-Servidor do MySQL. O pacote pode também transportar um erro ou um EOF. | Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_received_change_user |
Conexão | Number de pacotes COM_CHANGE_USER do protocolo Cliente-Servidor do MySQL | Útil somente para depurar a implementação do protocolo CS. Observe que o tamanho total em bytes inclui o tamanho do pacote de cabeçalho (4 bytes, consulte sobrecarga de protocolo). |
packets_sent_command |
Conexão | Número de comandos enviados do PHP para o MySQL no protocolo Cliente-Servidor do MySQL. Não há como saber que comandos específicos ou quantos deles foram enviados. No melhor caso pode-se usar esta estatística para verificar se o PHP enviou algum comando para o MySQL, para saber se pode-se considerar desabilitar o suporte ao MySQL no binário PHP. Também não há como fazer engenharia reversa do número de erros que podem ter ocorrido durante envio de dados para o MySQL. O único erro registrado é command_buffer_too_small (veja abaixo). | Útil somente para depurar a implementação do protocolo CS. |
bytes_received_real_data_normal |
Conexão | Número de bytes da carga buscada pelo cliente PHP a partir do
mysqlnd usando o protocolo de texto. |
Este é o tamanho dos dados reais contidos nos conjuntos de resultados que não
se originam de instruções preparadas e que foram buscados pelo
cliente PHP. Observe que embora um conjunto de resultados completo pode ter sido
puxado do MySQL pelo mysqlnd , esta estatística
conta somente dados reais puxados do mysqlnd pelo
cliente PHP. Um exemplo de uma sequência de código que irá aumentar
o valor está apresentado abaixo:
$mysqli = new mysqli(); $res = $mysqli->query("SELECT 'abc'"); $res->fetch_assoc(); $res->close(); Cada operação de busca irá aumentar o valor. A estatística não aumentará se o conjunto de resultados for apenas armazenado em buffer no cliente, mas não buscado, como no exemplo a seguir: $mysqli = new mysqli(); $res = $mysqli->query("SELECT 'abc'"); $res->close(); |
bytes_received_real_data_ps |
Conexão | Número de bytes da carga buscada pelo cliente PHP a partir do
mysqlnd usando o protocolo de instruções preparadas. |
Este é o tamanho dos dados reais contidos nos conjuntos de resultados que
se originam de instruções preparadas e que foram buscados pelo
cliente PHP. O valor não será aumentado se o conjunto de resultados
não for subsequentemente lido pelo cliente PHP. Observe que embora um
conjunto de resultados completo pode ter sido puxado do MySQL pelo
mysqlnd , esta estatística conta apenas dados reais
puxados do mysqlnd pelo cliente PHP. Consulte também
bytes_received_real_data_normal . |
Conjunto de Resultados
Estatística | Escopo | Descrição | Notas |
---|---|---|---|
result_set_queries |
Conexão | Número de consultas que geraram um conjunto de resultados. Exemplos de consultas
que geram um conjunto de resultados: SELECT ,
SHOW . A estatística não será incrementada se
houver um erro ao ler, da linha, o pacote de cabeçalho do conjunto de
resultados. |
Pode-se usar uma medida indireta para o número de consultas que o PHP enviou ao MySQL, por exemplo, para identificar um cliente que causa uma carga alta no banco de dados. |
non_result_set_queries |
Conexão | Número de consultas que não geraram um conjunto de resultados. Exemplos de
consultas que não geram um conjunto de resultados:
INSERT , UPDATE ,
LOAD DATA . A
estatística não será incrementada se houver um erro ao ler,
da linha, o pacote de cabeçalho do conjunto de resultados. |
Pode-se usar uma medida indireta para o número de consultas que o PHP enviou ao MySQL, por exemplo, para identificar um cliente que causa uma carga alta no banco de dados. |
no_index_used |
Conexão | Número de consultas que geraram um conjunto de resultados mas não usaram um índice (veja também a opção de início do mysqld –log-queries-not-using-indexes). Se for desejado que estas consultas sejam reportadas pode-se usar mysqli_report(MYSQLI_REPORT_INDEX) para fazer com que ext/mysqli lance uma exceção. Se for preferido um alerta ao invés de uma exceção, use mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT). | |
bad_index_used |
Conexão | Número de consultas que geraram um conjunto de resultados mas não usaram um índice bom (veja também a opção de início do mysqld –log-slow-queries). | Se for desejado que estas consultas sejam reportadas pode-se usar mysqli_report(MYSQLI_REPORT_INDEX) para fazer com que ext/mysqli lance uma exceção. Se for preferido um alerta ao invés de uma exceção, use mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT) |
slow_queries |
Conexão | Instruções SQL que levaram mais de long_query_time
segundos para serem executadas e que precisaram de pelo menos
min_examined_row_limit linhas examinadas. |
Não reportada através de mysqli_report() |
buffered_sets |
Conexão | Número de conjuntos de resultados em buffer retornados por consultas
normais. Normaissignificam aquelas que não são instruções preparadasnas notas a seguir. |
Examplos de chamadas de API que farão uso de buffer de conjuntos de resultados no cliente: mysql_query(), mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result(). Fazer buffer de resultados no cliente assegura que os recursos do servidor são liberados assim que possível e torna a rolagem do conjunto de resultados mais fácil. A desvantagem é o consumo adicional de memória no cliente para armazenar os dados em buffer. Observe que o mysqlnd (ao contrário da Biblioteca Cliente MySQL) respeita o limite de memória do PHP porque usa as funções de gerenciamento internas do PHP para alocar memória. Esta também é a razão pela qual memory_get_usage() reporta um consumo maior de memória quando usa o mysqlnd ao invés da Biblioteca Cliente do MySQL. memory_get_usage() não mede de maneira nenhuma o consumo de memória da Biblioteca Cliente MySQL porque a biblioteca não usa as funções de gerenciamento de memória internas do PHP, monitoradas pela função! |
unbuffered_sets |
Conexão | Número de conjuntos de resultados sem buffer retornados por consultas normais (instruções não preparadas). | Examplos de chamadas de API que não farão uso de buffer de conjuntos de resultados no cliente: mysqli_use_result() |
ps_buffered_sets |
Conexão | Número de conjuntos de resultados com buffer retornados por instruções preparadas. Por padrão, instruções preparadas são sem buffer. | Examplos de chamadas de API que farão uso de buffer de conjuntos de resultados no cliente:
mysqli_stmt_store_result |
ps_unbuffered_sets |
Conexão | Número de conjuntos de resultados sem buffer retornados por instruções preparadas. | Por padrão, instruções preparadas são sem buffer. |
flushed_normal_sets |
Conexão | Número de conjuntos de resultados de consultas normais (instrução não preparada) com dados não lidos que foram liberados silenciosamente. A liberação ocorre apenas com conjuntos de resultados sem buffer. | Os conjuntos de resultados sem buffer devem ser buscados completamente antes que uma nova consulta possa
ser executada na conexão, caso contrário o MySQL gerará um erro. Se
a aplicação não buscar todas as linhas de um conjunto de resultados sem
buffer, o mysqlnd buscará implicitamente o conjunto de resultados para limpar a
linha. Veja também rows_skipped_normal ,
rows_skipped_ps . Algumas causas possíveis para uma
liberação implícita:
|
flushed_ps_sets |
Conexão | Número de conjuntos de resultados de instruções preparadas com dados não lidos que foram liberados silenciosamente para você. A liberação ocorre apenas com conjuntos de resultados sem buffer. | Conjuntos de resultados sem buffer devem ser buscados completamente antes que uma nova consulta possa
ser executada na conexão, caso contrário o MySQL irá gerar um erro. Se
a aplicação não buscar todas as linhas de um conjunto de resultados sem
buffer, o mysqlnd buscará implicitamente o conjunto de resultados para limpar a
linha. Veja também rows_skipped_normal ,
rows_skipped_ps . Algumas causas possíveis para uma
liberação implícita:
|
ps_prepared_never_executed |
Conexão | Número de instruções preparadas mas nunca executadas. | As instruções preparadas ocupam recursos do servidor. Não se deve preparar uma declaração se não se planeja executá-la. |
ps_prepared_once_executed |
Conexão | Número de instruções preparadas executadas apenas uma vez. | Uma das ideias por trás das instruções preparadas é que a mesma consulta seja
executada repetidamente (com parâmetros diferentes) e algum
trabalho de análise e preparação possa ser salvo, se a execução
da instrução for dividida em estágios separados de preparação e execução. A
idéia é preparar uma vez e fazer cachedos resultados, por exemplo, da árvore de análise a ser reutilizada durante a execução de múltiplas instruções. Se uma instrução preparada for executada apenas uma vez, o processamento em dois estágios poderá ser ineficiente em comparação com consultas normaisporque todo o armazenamento em cache significa trabalho extra e são necessários recursos (limitados) do servidor para armazenar as informações armazenadas em cache. Conseqüentemente, instruções preparadas que são executadas apenas uma vez podem causar danos ao desempenho. |
rows_fetched_from_server_normal ,
rows_fetched_from_server_ps |
Conexão | Número total de linhas do conjunto de resultados obtidas com sucesso do MySQL, independentemente da aplicação cliente as ter consumido ou não. Algumas das linhas podem não ter sido buscadas pela aplicação cliente, mas podem ter sido liberadas implicitamente. | Veja também packets_received_rset_row |
rows_buffered_from_client_normal ,
rows_buffered_from_client_ps |
Conexão | Número total de linhas armazenadas em buffer com êxito originadas de uma consulta "normal" ou de uma instrução preparada. Este é o número de linhas que foram buscadas no MySQL e armazenadas em buffer no cliente. Observe que existem duas estatísticas distintas sobre linhas que foram armazenadas em buffer (MySQL para buffer interno do mysqlnd) e linhas armazenadas em buffer que foram buscadas pela aplicação cliente (buffer interno do mysqlnd para aplicação cliente). Se o número de linhas em buffer for maior que o número de linhas em buffer buscadas, isso pode significar que a aplicação cliente executa consultas que causam conjuntos de resultados maiores do que o necessário, resultando em linhas não lidas pelo cliente. | Exemplos de consultas que armazenarão resultados em buffer: mysqli_query(), mysqli_store_result() |
rows_fetched_from_client_normal_buffered ,
rows_fetched_from_client_ps_buffered |
Conexão | Número total de linhas buscadas pelo cliente de um conjunto de resultados em buffer criado por uma consulta "normal" ou uma instrução preparada. | |
rows_fetched_from_client_normal_unbuffered ,
rows_fetched_from_client_ps_unbuffered |
Conexão | Número total de linhas buscadas pelo cliente de um conjunto de resultados sem buffer criado por uma consulta "normal" ou uma instrução preparada. | |
rows_fetched_from_client_ps_cursor |
Conexão | Número total de linhas buscadas pelo cliente a partir de um cursor criado por uma instrução preparada. | |
rows_skipped_normal ,
rows_skipped_ps |
Conexão | Reservada para uso futuro (atualmente não suportada) | |
copy_on_write_saved ,
copy_on_write_performed |
Process | Com o mysqlnd, as variáveis retornadas pelas extensões apontam para os buffers de resultados da rede interna do mysqlnd. Se as variáveis não forem alteradas, os dados buscados serão mantidos apenas uma vez na memória. Se as variáveis forem alteradas, o mysqlnd deverá executar uma cópia na gravação para proteger os buffers de resultados da rede interna contra alterações. Com a Biblioteca Cliente MySQL os dados buscados são sempre mantidos duas vezes na memória. Uma vez nos buffers internos da Biblioteca Cliente MySQL e uma vez nas variáveis retornadas pelas extensões. Em teoria, o mysqlnd pode economizar até 40% de memória. Entretanto, observe que a economia de memória não pode ser medida usando memory_get_usage(). | |
explicit_free_result ,
implicit_free_result |
Conexão, Processo (somente durante limpeza de instrução preparada) | Número total de conjuntos de resultados liberados. | A liberação é sempre considerada explícita exceto para conjuntos de resultados criados por um
comando init, por exemplo ,
mysqli_options(MYSQLI_INIT_COMMAND , ...) |
proto_text_fetched_null ,
proto_text_fetched_bit ,
proto_text_fetched_tinyint
proto_text_fetched_short ,
proto_text_fetched_int24 ,
proto_text_fetched_int
proto_text_fetched_bigint ,
proto_text_fetched_decimal ,
proto_text_fetched_float
proto_text_fetched_double ,
proto_text_fetched_date ,
proto_text_fetched_year
proto_text_fetched_time ,
proto_text_fetched_datetime ,
proto_text_fetched_timestamp
proto_text_fetched_string ,
proto_text_fetched_blob ,
proto_text_fetched_enum
proto_text_fetched_set ,
proto_text_fetched_geometry ,
proto_text_fetched_other |
Conexão | Número total de colunas de um certo tipo buscadas por uma consulta normal (protocolo de texto do MySQL). | Mapeamento de tipos API C / metadados MySQL para o nome da estatística:
Observe que as constantes MYSQL_*-type podem não estar associadas com os mesmos tipos de colunas SQL em todas as versões do MySQL. |
proto_binary_fetched_null ,
proto_binary_fetched_bit ,
proto_binary_fetched_tinyint
proto_binary_fetched_short ,
proto_binary_fetched_int24 ,
proto_binary_fetched_int ,
proto_binary_fetched_bigint ,
proto_binary_fetched_decimal ,
proto_binary_fetched_float ,
proto_binary_fetched_double ,
proto_binary_fetched_date ,
proto_binary_fetched_year ,
proto_binary_fetched_time ,
proto_binary_fetched_datetime ,
proto_binary_fetched_timestamp ,
proto_binary_fetched_string ,
proto_binary_fetched_blob ,
proto_binary_fetched_enum ,
proto_binary_fetched_set ,
proto_binary_fetched_geometry ,
proto_binary_fetched_other |
Conexão | Número total de colunas de um certo tipo buscadas por uma instrução preparada (protocolo binário do MySQL). | Para mapeamento de tipos, consulte proto_text_* descrito no
texto anterior. |
Estatística | Escopo | Descrição | Notas |
---|---|---|---|
connect_success , connect_failure |
Conexão | Número total de tentativas de conexão bem sucedidas ou falhadas. | Conexões reutilizadas e todos os outros tipos de conexão são incluídos. |
reconnect |
Processo | Número total de tentativas de (real_)connect feitas em um identificador de conexão já aberta. | A sequência de código $link = new mysqli(...);
$link->real_connect(...) causará uma reconexão. Porém,
$link = new mysqli(...); $link->connect(...)
não causará porque $link->connect(...) irá
fechar explicitamente a conexão existente antes que uma nova conexão
seja estabelecida. |
pconnect_success |
Conexão | Número total de tentativas de conexões persistentes bem sucedidas. | Observe que connect_success mantém a soma de tentativas de
conexões persistentes e não persistentes. O número de tentativas de conexões não
persistentes bem sucedidas é
connect_success -
pconnect_success . |
active_connections |
Conexão | Número total de conexões ativas persistentes e não persistentes. | |
active_persistent_connections |
Conexão | Número total de conexões ativas persistentes. | O número total de conexões ativas não persistentes é
active_connections -
active_persistent_connections . |
explicit_close |
Conexão | Número total de conexões fechadas explicitamente (somente ext/mysqli). | Exemplos de trechos de código que causam um fechamento explícito:
$link = new mysqli(...); $link->close(...) $link = new mysqli(...); $link->connect(...) |
implicit_close |
Conexão | Número total de conexões fechadas implicitamente (somente ext/mysqli). | Exemplos de trecho de código que causam um fechamento implícito:
|
disconnect_close |
Conexão | Falhas de conexão indicadas pela chamada da API C mysql_real_connect() durante uma tentativa de se estabelecer uma conexão. | É chamada de disconnect_close porque o identificador de
conexão passado à chamada da API C será fechado. |
in_middle_of_command_close |
Processo | Uma conexão foi fechada no meio de uma execução de comando (conjunto de resultados não buscado, após consulta enviada e antes da obtenção de uma resposta, durante busca de dados, enquanto se transfere dados com LOAD DATA). | A menos que consultas assíncronas estejam sendo usadas, isto só deve acontecer se o script parar inesperadamente e o PHP fechar as conexões. |
init_command_executed_count |
Conexão | Número total de execuções do comando init, por exemplo,
mysqli_options(MYSQLI_INIT_COMMAND , ...) . |
O número de execuções bem sucedidas é
init_command_executed_count -
init_command_failed_count . |
init_command_failed_count |
Conexão | Número total de comandos init falhados. |
Estatística | Escopo | Descrição | Notas |
---|---|---|---|
com_quit , com_init_db ,
com_query , com_field_list ,
com_create_db , com_drop_db ,
com_refresh , com_shutdown ,
com_statistics ,
com_process_info ,
com_connect ,
com_process_kill , com_debug ,
com_ping , com_time ,
com_delayed_insert ,
com_change_user ,
com_binlog_dump ,
com_table_dump ,
com_connect_out ,
com_register_slave ,
com_stmt_prepare ,
com_stmt_execute ,
com_stmt_send_long_data ,
com_stmt_close ,
com_stmt_reset ,
com_stmt_set_option ,
com_stmt_fetch , com_daemon |
Conexão | Número total de tentativas de envio de um comando COM_* específico do PHP para o MySQL. |
As estatísticas são incrementadas após a verificação da linha e
imediatamente antes de enviar o pacote de protocolo cliente-servidor MySQL
correspondente. Se o mysqlnd falhar ao enviar o pacote pela
rede, as estatísticas não serão decrementadas. Em caso de falha,
o mysqlnd emite um alerta do PHP Exemplos de uso:
|
Miscelâneos
Estatística | Escopo | Descrição | Notas |
---|---|---|---|
explicit_stmt_close ,
implicit_stmt_close |
Processo | Número total de fechamento de instruções preparadas. | Um fechamento é sempre considerado explícito exceto para uma preparação falhada. |
mem_emalloc_count ,
mem_emalloc_ammount ,
mem_ecalloc_count ,
mem_ecalloc_ammount ,
mem_erealloc_count ,
mem_erealloc_ammount ,
mem_efree_count ,
mem_malloc_count ,
mem_malloc_ammount ,
mem_calloc_count ,
mem_calloc_ammount ,
mem_realloc_count ,
mem_realloc_ammount ,
mem_free_count |
Processo | Chamadas de gerenciamento de memória. | Somente desenvolvimento. |
command_buffer_too_small |
Conexão | Número de extensões de buffer de comando de rede ao enviar comandos do PHP para o MySQL. |
mysqlnd aloca um buffer de comando/rede interno com tamanho de
Se o mysqlnd tiver que aumentar o buffer além de seu tamanho inicial em bytes definido em
O tamanho padrão do buffer é de 4096 bytes, que é o menor valor possível. O padrão pode
ser alterado através da configuração |
connection_reused |