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
Ao usar a extensão mysqli, 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, se a extensão mysqli e o driver PDO MySQL estiverem ambos configurados para usar MySQLnd, as chamadas de função de mysqli e chamadas de métodos do PDO afetarão 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.
Estatísticas do cliente podem ser obtidas chamando a função mysqli_get_client_stats()
Estatísticas de conexão podem ser obtidas chamando a função mysqli_get_connection_stats().
Ambas as funções retornam um array associativo, onde o nome da estatística é a chave para o dado estatístico correspondente.
A maior parte das estatíticas são associadas a uma conexão mas algumas são associadas ao processo, e neste caso isto será mencionado no texto.
As seguintes estatísticas são produzidas pelo Driver Nativo MySQL:
bytes_sentNúmero de bytes enviados do PHP para o servidor MySQL.
bytes_receivedNúmero de bytes recebidos do servidor MySQL.
packets_sentNúmero de pacotes enviados pelo protocolo Cliente Servidor do MySQL.
packets_receivedNúmero de pacotes recebidos pelo protocolo Cliente Servidor do MySQL.
protocol_overhead_in
Sobrecarga do protocolo Cliente Servidor do MySQL em bytes para o tráfego de entrada.
Atualmente apenas o Cabeçalho do Pacote (4 bytes) é considerado como sobrecarga.
protocol_overhead_in = packets_received * 4
protocol_overhead_out
Sobrecarga do protocolo Cliente Servidor do MySQL em bytes para o tráfego de saída.
Atualmente apenas o Cabeçalho do Pacote (4 bytes) é considerado como sobrecarga.
protocol_overhead_out = packets_received * 4
bytes_received_ok_packetTamanho total em bytes de pacotes OK recebidos pelo protocolo Cliente Servidor do MySQL. 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.
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_okNúmero de pacotes OK recebidos pelo protocolo Cliente Servidor do MySQL.
bytes_received_eof_packetTamanho total em bytes de pacotes EOF recebidos pelo protocolo Cliente Servidor do MySQL. EOF pode variar em tamanho dependendo da versão do servidor. Além disso, EOF pode transportar uma mensagem de erro.
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_eofNúmero de pacotes EOF recebidos pelo protocolo Cliente Servidor do MySQL.
Como acontece com outras estatísticas de pacotes, o número de pacotes será incrementado mesmo se o PHP não receber o pacote esperado mas, por exemplo, receber uma mensagem de erro.
bytes_received_rset_header_packet
Tamanho total em bytes dos pacotes de cabeçalho do conjunto de resultados
recebido pelo protocolo Cliente Servidor do MySQL.
O tamanho dos pacotes varia dependendo da carga
(LOAD LOCAL INFILE, INSERT,
UPDATE, SELECT, mensagem de erro).
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_rset_headerNúmero de pacotes de cabeçalho de conjunto de resultados recebidos pelo protocolo Cliente Servidor do MySQL.
bytes_received_rset_field_meta_packetTamanho total em bytes de pacotes de metadados (informação de campo) de conjunto de resultados recebidos pelo protocolo Cliente Servidor do MySQL. É evidente que o tamanho varia com os campos no conjunto de resultados. O pacotes também pode transportar um pacote de erro ou de EOF em caso de COM_LIST_FIELDS.
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_rset_field_metaNúmero de pacotesde metadados (informação de campo) de conjunto de resultados recebidos pelo protocolo Cliente Servidor do MySQL.
bytes_received_rset_row_packet
Tamanho total em bytes dos pacotes de dados de registros do conjunto de resultados
recebidos pelo protocolo Cliente Servidor do MySQL.
O pacote também pode transportar uma mensagem de erro ou de EOF.
Pode-se computar o número de pacotes de erro e de EOF subtraindo-se
rows_fetched_from_server_normal
e rows_fetched_from_server_ps
de bytes_received_rset_row_packet.
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_rset_rowNúmero de pacotes de dados de registros do conjunto de resultados recebidos pelo protocolo Cliente Servidor do MySQL.
bytes_received_prepare_response_packetTamanho total em bytes dos pacotes de Inicialização OK para Instruções Preparadas (pacotes de inicialização de instrução preparada) recebidos pelo protocolo Cliente Servidor do MySQL. O pacote também pode transportar um erro. O tamanho do pacote depende da versão MySQL.
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_prepare_responseNúmero de pacotes de inicialização de instruções preparadas recebidos pelo protocolo Cliente Servidor do MySQL.
bytes_received_change_user_packetTamanho total em bytes de pacotes COM_CHANGE_USER recebidos pelo protocolo Cliente Servidor do MySQL. O pacote também pode transportar um erro ou um EOF.
Nota:
O tamanho total em bytes inclui o tamanho do pacote de cabeçalho. (4 bytes, consulte sobre sobrecarga do protocolo)
packets_received_change_userNúmero de pacotes COM_CHANGE_USER recebidos pelo protocolo Cliente Servidor do MySQL.
packets_sent_commandNúmero de comandos do protocolo Cliente Servidor do MySQL enviados pelo PHP ao MySQL.
Não há como saber quais foram os comandos específicos e quantos deles foram enviados.
bytes_received_real_data_normal
Número de bytes dos dados reais buscados pelo cliente PHP vindos do
mysqlnd usando o protocolo de texto.
Este é o tamanho dos dados reais contidos nos conjuntos de resultados que não se originaram de instruções preparadas e que foram buscados pelo cliente PHP.
Observe que embora um conjunto de resultados completo possa ter sido puxado do MySQL
pelo mysqlnd, esta estatística apenas conta dados reais
puxados a partir do mysqlnd pelo cliente PHP.
A seguir é apresentado um exemplo de sequência de código que irá incrementar o valor:
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->fetch_assoc();
$res->close();
Entretanto, a estatística não será incrementada se o conjunto de resultados estiver sujeito a buffer no lado do cliente mas não for buscado, como no exemplo a seguir:
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->close();
bytes_received_real_data_ps
Número de bytes dos dados reais buscados pelo cliente PHP vindos do
mysqlnd usando o protocolo de instruções preparadas.
Este é o tamanho dos dados reais contidos nos conjuntos de resultados que se originaram de instruções preparadas e que foram buscados pelo cliente PHP.
O valor não será incrementado se o conjunto de resultados não for subsequentemente lido pelo cliente PHP.
Observe que embora um conjunto de resultados completo possa ter sido puxado do MySQL
pelo mysqlnd, esta estatística apenas conta dados reais
puxados a partir do mysqlnd pelo cliente PHP.
Consulte também bytes_received_real_data_normal.
result_set_queries
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 ocorrer um erro ao ler o pacote de cabeçalho do conjunto de resultados.
Nota:
Esta estatística pode ser usada como uma medição indireta do número de consultas que o PHP enviou ao MySQL. Isto pode ajudar a identificar um cliente que causa uma carga alta no banco de dados.
non_result_set_queries
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 ocorrer um erro ao ler o pacote de cabeçalho do conjunto de resultados.
Nota:
Esta estatística pode ser usada como uma medição indireta do número de consultas que o PHP enviou ao MySQL. Isto pode ajudar a identificar um cliente que causa uma carga alta no banco de dados.
no_index_used
Número de consultas que geraram um conjunto de resultados mas não usaram um índice.
(Consulte também a opção de início do mysqld --log-queries-not-using-indexes).
Nota:
Essas consultas podem ser reportadas através de uma exceção com
mysqli_report(MYSQLI_REPORT_INDEX);. É possível reportá-las também através de um alerta commysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);.
bad_index_used
Número de consultas que geraram um conjunto de resultados e não usaram um índice bom.
(Consulte também a opção de início do mysqld --log-slow-queries).
Nota:
Essas consultas podem ser reportadas através de uma exceção com
mysqli_report(MYSQLI_REPORT_INDEX);. É possível reportá-las também através de um alerta commysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT);.
slow_queries
Instruções SQL que levaram mais de long_query_time
segundos para execução e requereram que pelo menos
min_examined_row_limit registros fossem examinados.
Não reportada através de mysqli_report().
buffered_setsNúmero de conjuntos de resultados em buffer retornados por consultas normais (isto é, não por via de instrução preparada).
Exemplos de chamadas API que armazenarão conjuntos de resultados em buffer no cliente: mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result()
unbuffered_setsNúmero de conjuntos de resultados sem buffer retornados por consultas normais (isto é, não por via de instrução preparada).
Exemplos de chamadas API que não armazenarão conjuntos de resultados em buffer no cliente: mysqli_use_result()
ps_buffered_setsNúmero de conjuntos de resultados em buffer retornados por instruções preparadas.
Exemplos de chamadas API que armazenarão conjuntos de resultados em buffer no cliente: mysqli_stmt_store_result()
ps_unbuffered_setsNúmero de conjuntos de resultados sem buffer retornados por instruções preparadas.
Por padrão, instruções preparadas não são armazenadas em buffer, portanto a maioria das instruções preparadas será considerada nesta estatísitica.
flushed_normal_setsNúmero de conjuntos de resultados retornados por consultas normais (isto é, não por via de instrução preparada) com dados não lidos que foram silenciosamente descarregados.
Nota:
Os descarregamento ocorre somente com conjuntos de resultados sem buffer.
Conjuntos de resultados sem buffer devem ser buscados integralmente antes que uma nova consulta possa ser executada na conexão, caso contrário o MySQL lançará um erro. Se a aplicação não buscar todos os registros de um conjunto de resultados sem buffer, o mysqlnd não busca implicitamente o conjunto de resultados para limpar a linha de dados.
Consulta também
rows_skipped_normal,rows_skipped_ps.Algumas causas possíveis para um descarregamento implícito:
Aplicação cliente com falhas
Cliente parou de ler depois de ter encontrado o que estava procurando mas fez o MySQL calcular mais registros que o necessário
Aplicação cliente parou inesperadamente
flushed_ps_setsNúmero de conjuntos de resultados de instruções preparadas com dados não lidos que foram silenciosamente descarregados.
Nota:
Os descarregamento ocorre somente com conjuntos de resultados sem buffer.
Conjuntos de resultados sem buffer devem ser buscados integralmente antes que uma nova consulta possa ser executada na conexão, caso contrário o MySQL lançará um erro. Se a aplicação não buscar todos os registros de um conjunto de resultados sem buffer, o mysqlnd não busca implicitamente o conjunto de resultados para limpar a linha de dados.
Consulta também
rows_skipped_normal,rows_skipped_ps.Algumas causas possíveis para um descarregamento implícito:
Aplicação cliente com falhas
Cliente parou de ler depois de ter encontrado o que estava procurando mas fez o MySQL calcular mais registros que o necessário
Aplicação cliente parou inesperadamente
ps_prepared_never_executedNúmero de intruções preparadas mas nunca executadas.
ps_prepared_once_executedNúmero de intruções preparadas executadas apenas uma vez.
rows_fetched_from_server_normalrows_fetched_from_server_psNúmero total de registros do conjunto de resultados buscados do servidor. Isto inclui os registros que não foram lidos pelo cliente mas foram buscados implicitamente devido a conjuntos de resultados sem buffer descarregados.
Consulte também packets_received_rset_row.
rows_buffered_from_client_normalNúmero total de registros em buffer originários de uma consulta normal.
Este é o número de registros que foram buscados do MySQL e armazenados em buffer no cliente.
Exemplos de consultas que irão armazenar resultados em buffer:
rows_buffered_from_client_ps
O mesmo que rows_buffered_from_client_normal,
porém para instruções preparadas.
rows_fetched_from_client_normal_bufferedNúmero total de registros buscados pelo cliente a partir de um conjunto de resultados em buffer criado por uma consulta normal.
rows_fetched_from_client_ps_bufferedNúmero total de registros buscados pelo cliente a partir de um conjunto de resultados em buffer criado por uma instrução preparada.
rows_fetched_from_client_normal_unbufferedNúmero total de registros buscados pelo cliente a partir de um conjunto de resultados sem buffer criado por uma consulta normal.
rows_fetched_from_client_ps_unbufferedNúmero total de registros buscados pelo cliente a partir de um conjunto de resultados sem buffer criado por uma instrução preparada.
rows_fetched_from_client_ps_cursorNúmero total de registros buscados pelo cliente a partir de um cursor criado por uma instrução preparada.
rows_skipped_normalrows_skipped_psReservada para uso futuro (atualmente não suportada).
copy_on_write_savedcopy_on_write_performedEsta é uma estatística cujo escopo está no nível de processo.
Com o mysqlnd, variáveis retornadas pelas extensões apontam para os buffers de resultados da rede interna do mysqlnd. Se os dados não foram modificados, os dados buscados são mantidos apenas uma vez na memória. Entretanto, qualquer modificação nos dados irá requerer que o mysqlnd realize uma operação de cópia-na-escrita.
explicit_free_resultimplicit_free_resultEsta é uma estatística cujo escopo está no nível de conexão e de processo.
Número total de conjuntos de resultados liberados.
proto_text_fetched_null
Número total de colunas do tipo
MYSQL_TYPE_NULL
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_null
Número total de colunas do tipo
MYSQL_TYPE_NULL
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_bit
Número total de colunas do tipo
MYSQL_TYPE_BIT
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_bit
Número total de colunas do tipo
MYSQL_TYPE_BIT
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_tinyint
Número total de colunas do tipo
MYSQL_TYPE_TINY
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_tinyint
Número total de colunas do tipo
MYSQL_TYPE_TINY
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_short
Número total de colunas do tipo
MYSQL_TYPE_SHORT
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_short
Número total de colunas do tipo
MYSQL_TYPE_SHORT
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_int24
Número total de colunas do tipo
MYSQL_TYPE_INT24
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_int24
Número total de colunas do tipo
MYSQL_TYPE_INT24
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_int
Número total de colunas do tipo
MYSQL_TYPE_LONG
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_int
Número total de colunas do tipo
MYSQL_TYPE_LONG
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_bigint
Número total de colunas do tipo
MYSQL_TYPE_LONGLONG
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_bigint
Número total de colunas do tipo
MYSQL_TYPE_LONGLONG
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_decimal
Número total de colunas dos tipos
MYSQL_TYPE_DECIMAL ou MYSQL_TYPE_NEWDECIMAL
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_decimal
Número total de colunas dos tipos
MYSQL_TYPE_DECIMAL ou MYSQL_TYPE_NEWDECIMAL
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_float
Número total de colunas do tipo
MYSQL_TYPE_FLOAT
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_float
Número total de colunas do tipo
MYSQL_TYPE_FLOAT
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_double
Número total de colunas do tipo
MYSQL_TYPE_DOUBLE
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_double
Número total de colunas do tipo
MYSQL_TYPE_DOUBLE
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_date
Número total de colunas do tipo
MYSQL_TYPE_DATE ou MYSQL_TYPE_NEWDATE
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_date
Número total de colunas do tipo
MYSQL_TYPE_DATE ou MYSQL_TYPE_NEWDATE
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_year
Número total de colunas do tipo
MYSQL_TYPE_YEAR
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_year
Número total de colunas do tipo
MYSQL_TYPE_YEAR
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_time
Número total de colunas do tipo
MYSQL_TYPE_TIME
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_time
Número total de colunas do tipo
MYSQL_TYPE_TIME
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_datetime
Número total de colunas do tipo
MYSQL_TYPE_DATETIME
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_datetime
Número total de colunas do tipo
MYSQL_TYPE_DATETIME
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_timestamp
Número total de colunas do tipo
MYSQL_TYPE_TIMESTAMP
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_timestamp
Número total de colunas do tipo
MYSQL_TYPE_TIMESTAMP
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_string
Número total de colunas dos tipos
MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING ou MYSQL_TYPE_VARCHAR
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_string
Número total de colunas dos tipos
MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING ou MYSQL_TYPE_VARCHAR
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_blob
Número total de colunas dos tipos
MYSQL_TYPE_TINY_BLOB,
MYSQL_TYPE_MEDIUM_BLOB,
MYSQL_TYPE_LONG_BLOB
ou MYSQL_TYPE_BLOB
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_blob
Número total de colunas dos tipos
MYSQL_TYPE_TINY_BLOB,
MYSQL_TYPE_MEDIUM_BLOB,
MYSQL_TYPE_LONG_BLOB
ou MYSQL_TYPE_BLOB
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_enum
Número total de colunas do tipo
MYSQL_TYPE_ENUM
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_enum
Número total de colunas do tipo
MYSQL_TYPE_ENUM
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_set
Número total de colunas do tipo
MYSQL_TYPE_SET
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_set
Número total de colunas do tipo
MYSQL_TYPE_SET
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_geometry
Número total de colunas do tipo
MYSQL_TYPE_GEOMETRY
buscadas por uma consulta normal (protocolo de texto MySQL).
proto_binary_fetched_geometry
Número total de colunas do tipo
MYSQL_TYPE_GEOMETRY
buscadas por uma instrução preparada (protocolo binário MySQL).
proto_text_fetched_other
Número total de colunas dos tipos
MYSQL_TYPE_*
não listadas previamente e
buscadas por uma consulta normal (protocolo de texto MySQL).
Nota:
Em teoria, deveria ser sempre
0.
proto_binary_fetched_other
Número total de colunas dos tipos
MYSQL_TYPE_*
não listadas previamente e
buscadas por uma instrução preparada (protocolo binário MySQL).
Nota:
Em teoria, deveria ser sempre
0.
connect_successNúmero total de tentativas bem sucedidas de conexões.
Nota:
connect_successcontém a soma de tentativas bem sucedidas de conexões persistentes e não persistentes. Portanto, o número de tentativas bem sucedidas de conexões não persistentes éconnect_success - pconnect_success.
pconnect_successNúmero total de tentativas bem sucedidas de conexões persistentes.
connect_failureNúmero total de tentativas falhadas de conexões.
reconnectEsta é uma estatística cujo escopo está no nível de processo.
active_connectionsEsta é uma estatística cujo escopo está no nível de processo.
Número total de conexões ativas, persistentes e não persistentes.
Nota:
Número total de conexões ativas não persistentes é
active_connections - active_persistent_connections.
active_persistent_connectionsEsta é uma estatística cujo escopo está no nível de processo.
Número total de conexões ativas persistentes.
explicit_closeNúmero total de conexões fechadas explicitamente.
Exemplo #1 Exemplos de trechos de código que causam um fechamento explícito
$link = new mysqli(/* ... */); $link->close(/* ... */);
$link = new mysqli(/* ... */); $link->connect(/* ... */);
implicit_closeNúmero total de conexões fechadas implicitamente.
Exemplo #2 Exemplos de trechos de código que causam um fechamento implícito
$link = new mysqli(/* ... */); $link->real_connect(/* ... */);
unset($link)
Conexão persistente: conexão em fila foi criada com real_connect e podem haver opções desconhecidas definidas - fecha implicitamente para evitar o retorno de uma conexão com opções desconhecidas
Conexão persistente: ping/change_user falha e a extensão mysqli fecha a conexão
Fim de execução de script: fecha conexões que não foram fechadas pelo usuário
disconnect_close
Falhas de conexão indicadas pela chamada API C
mysql_real_connect durante uma tentativa de se
estabalecer uma conexão.
in_middle_of_command_closeEsta é uma estatística cujo escopo está no nível de processo.
Uma conexão foi fechada no meio de uma execução de comando (conjuntos de resultados não buscados, após enviar uma consulta e antes de receber uma resposta, durante a busca de dados, enquanto dados são transferidos com LOAD DATA).
A menos que consultas assíncronas sejam usadas, isto só deve acontecer se a aplicação PHP terminar inesperadamente e o PHP fechar a conexão automaticamente.
init_command_executed_count
Número total de execuções do comando init.
Por exemplo: mysqli_options(MYSQLI_INIT_COMMAND , $value).
O número total de execuções bem sucedidas é
init_command_executed_count - init_command_failed_count.
init_command_failed_countNúmero total de comandos init falhados.
COM_*
com_quitcom_init_dbcom_querycom_field_listcom_create_dbcom_drop_dbcom_refreshcom_shutdowncom_statisticscom_process_infocom_connectcom_process_killcom_debugcom_pingcom_timecom_delayed_insertcom_change_usercom_binlog_dumpcom_table_dumpcom_connect_outcom_register_slavecom_stmt_preparecom_stmt_executecom_stmt_send_long_datacom_stmt_closecom_stmt_resetcom_stmt_set_optioncom_stmt_fetchcom_daemon
Número total de tentativas de envio de um certo comando COM_*
do PHP para o MySQL.
As estatísticas são incrementadas após verificação da linha de dados e imediatamente antes do envio do pacote correspondente do protocolo Cliente Servidor do MySQL.
Se o MySQLnd falhar ao enviar o pacote pela rede, a estatística não será decrementada.
Em caso de falha, o MySQLnd emite um alerta do PHP
Error while sending %s packet. PID=%d.
Exemplo #3 Exemplos de uso
Verificar se o PHP envia certos comandos ao MySQL, por exemplo,
verificar se o cliente envia COM_PROCESS_KILL
Calcular o número médio de execuções de instruções preparadas
comparando COM_EXECUTE com
COM_PREPARE
Verificar se o PHP executou alguma instrução SQL não preparada
observando se COM_QUERY é igual a zero
Identificar scripts PHP que executam um número excessivo de instruções
SQL, verificando COM_QUERY e
COM_EXECUTE
explicit_stmt_closeimplicit_stmt_closeEsta é uma estatística cujo escopo está no nível de processo.
Número total de instruções preparadas fechadas.
Nota:
Uma instrução preparada é sempre fechada explicitamente. O único momento em que ela é fechaada implicitamente é quando sua preparação falha.
mem_emalloc_countmem_emalloc_ammountmem_ecalloc_countmem_ecalloc_ammountmem_realloc_countmem_realloc_ammountmem_efree_countmem_malloc_countmem_malloc_ammountmem_calloc_countmem_calloc_ammountmem_ealloc_countmem_ealloc_ammountmem_free_countEsta é uma estatística cujo escopo está no nível de processo.
Chamadas de gerenciamento de memória.
command_buffer_too_smallNúmero de extensões de buffer de comandos de rede ao enviar comandos do PHP para o MySQL.
MySQLnd aloca um buffer interno de comando/rede de mysqlnd.net_cmd_buffer_size bytes para cada conexão.
Se um comando do protocolo Cliente Servidor do MySQL,
por exemplo COM_QUERY (consulta normal),
não couber no buffer,
o MySQLnd aumentará o buffer para o tamanho necessário para envio do comando.
Sempre que o buffer for estendido para uma conexão,
command_buffer_too_small será incrementada em uma unidade.
Se o MySQLnd tiver que aumentar o buffer para além do seu tamanho inicial de mysqlnd.net_cmd_buffer_size bytes para quase todas as conexões, deve ser considerado aumento do tamanho padrão para evitar realocações.
connection_reusedO número total de vezes em que uma conexão persistente foi reutilizada.