O Performance Insight é uma ferramenta poderosa para monitoramento de carga de instâncias, análise de correlação e ajuste de desempenho. Ele ajuda você a avaliar rapidamente a carga do banco de dados, encontrar a causa raiz de problemas de desempenho e melhorar a estabilidade do banco de dados.
Pré-requisitos
Sua instância do ApsaraDB RDS for MySQL deve executar o MySQL 8.4, 8.0 ou 5.7, e a versão secundária do mecanismo deve ser 20190915 ou posterior.
Verifique a versão secundária do mecanismo na página Basic Information. Na seção Configuration Information, verifique se o botão Upgrade Kernel Version está exibido. Se esse botão aparecer, clique nele para visualizar a versão atual. Caso contrário, sua instância já está executando a versão mais recente. Para mais informações, consulte {{XREF_0}}.
Performance Insight
O Performance Insight consiste em dois componentes:
-
Estatísticas de objetos
As estatísticas de objetos fornecem dados sobre tabelas e índices. Incluem duas tabelas:
TABLE_STATISTICS: Registra as linhas lidas e modificadas.INDEX_STATISTICS: Registra as linhas lidas por índices.
-
Performance point
O Performance point fornece informações detalhadas de desempenho para uma instância, ajudando você a quantificar o custo de instruções SQL de forma mais rápida e precisa. Inclui três dimensões:
CPU: Inclui métricas como tempo total de execução (Elapsed time) e tempo de CPU.
LOCK: Inclui métricas como tempo de bloqueio de metadados do servidor (MDL), tempo de bloqueio de transação, contenção de mutex (apenas no modo de depuração) e contenção de bloqueio de leitura e gravação.
IO: Inclui métricas como tempo de leitura e gravação de arquivos de dados, tempo de gravação de arquivos de log, leituras lógicas, leituras físicas e leituras assíncronas físicas.
Como usar as estatísticas de objetos
-
Verifique se os parâmetros OPT_TABLESTAT e OPT_INDEXSTAT estão definidos como ON. Por exemplo:
mysql> show variables like "opt_%_stat"; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | opt_indexstat | ON | | opt_tablestat | ON | +---------------+-------+ -
Consulte a tabela
TABLE_STATISTICSouINDEX_STATISTICSno banco de dadosinformation_schemapara visualizar as estatísticas de tabelas e índices. Por exemplo:mysql> select * from TABLE_STATISTICS limit 10; +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | ROWS_READ | ROWS_CHANGED | ROWS_CHANGED_X_INDEXES | ROWS_INSERTED | ROWS_DELETED | ROWS_UPDATED | +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ | mysql | db | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | engine_cost | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | proxies_priv | 1 | 0 | 0 | 0 | 0 | 0 | | mysql | server_cost | 6 | 0 | 0 | 0 | 0 | 0 | | mysql | tables_priv | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | user | 7 | 0 | 0 | 0 | 0 | 0 | | test | sbtest1 | 1686 | 142 | 184 | 112 | 12 | 18 | | test | sbtest10 | 1806 | 125 | 150 | 105 | 5 | 15 | | test | sbtest100 | 1623 | 141 | 182 | 110 | 10 | 21 | | test | sbtest11 | 1254 | 136 | 172 | 110 | 10 | 16 | +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ mysql> select * from INDEX_STATISTICS limit 10; +--------------+--------------+------------+-----------+ | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ | +--------------+--------------+------------+-----------+ | mysql | db | PRIMARY | 2 | | mysql | engine_cost | PRIMARY | 2 | | mysql | proxies_priv | PRIMARY | 1 | | mysql | server_cost | PRIMARY | 6 | | mysql | tables_priv | PRIMARY | 2 | | mysql | user | PRIMARY | 7 | | test | sbtest1 | PRIMARY | 2500 | | test | sbtest10 | PRIMARY | 3007 | | test | sbtest100 | PRIMARY | 2642 | | test | sbtest11 | 2091 | +--------------+--------------+------------+-----------+A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
TABLE_SCHEMA
Nome do banco de dados.
TABLE_NAME
Nome da tabela.
ROWS_READ
Quantidade de linhas lidas.
ROWS_CHANGED
Total de linhas modificadas.
ROWS_CHANGED_X_INDEXES
Número de atualizações de índice resultantes de alterações nas linhas.
ROWS_INSERTED
Linhas inseridas.
ROWS_DELETED
Linhas excluídas.
ROWS_UPDATED
Linhas atualizadas.
INDEX_NAME
Nome do índice.
Como usar o Performance point
-
Verifique os parâmetros do Performance point. A saída a seguir indica que o recurso está ativado:
mysql> show variables like "%performance_point%"; +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | performance_point_dbug_enabled | OFF | | performance_point_enabled | ON | | performance_point_iostat_interval | 2 | | performance_point_iostat_volume_size | 10000 | | performance_point_lock_rwlock_enabled | ON | +---------------------------------------+-------+NotaSe essas variáveis não forem encontradas, verifique se sua instância atende aos pré-requisitos.
-
Consulte a tabela
events_statements_summary_by_digest_supplementno banco de dadosperformance_schemapara visualizar as estatísticas de instruções SQL. Por exemplo:mysql> select * from events_statements_summary_by_digest_supplement limit 10; +--------------------+----------------------------------+-------------------------------------------+--------------+ | SCHEMA_NAME | DIGEST | DIGEST_TEXT | ELAPSED_TIME | ...... +--------------------+----------------------------------+-------------------------------------------+--------------+ | NULL | 6b787dd1f9c6f6c5033120760a1a82de | SELECT @@`version_comment` LIMIT ? | 932 | | NULL | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2363 | | NULL | 8a93e76a7846384621567fb4daa1bf95 | SHOW VARIABLES LIKE ? | 17933 | | NULL | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 1006 | | information_schema | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2156 | | information_schema | 74af182f3a2bd265678d3dadb53e08da | SHOW TABLES | 3161 | | information_schema | d3a66515192fcb100aaef6f8b6e45603 | SELECT * FROM `TABLE_STATISTICS` LIMIT ? | 2081 | | information_schema | b3726b7c4c4db4b309de2dbc45ff52af | SELECT * FROM `INDEX_STATISTICS` LIMIT ? | 2384 | | information_schema | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 129 | | test | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 342 | +--------------------+----------------------------------+-------------------------------------------+--------------+A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
SCHEMA_NAME
Nome do banco de dados.
DIGEST
String de hash de 64 bytes derivada do valor de DIGEST_TEXT.
DIGEST_TEXT
Forma normalizada da instrução SQL.
ELAPSED_TIME
Tempo total de execução. Unidade: microssegundos (μs).
CPU_TIME
Tempo de CPU. Unidade: microssegundos (μs).
SERVER_LOCK_TIME
Tempo de bloqueio do servidor. Unidade: microssegundos (μs).
TRANSACTION_LOCK_TIME
Tempo de bloqueio da transação. Unidade: microssegundos (μs).
MUTEX_SPINS
Quantidade de rotações de mutex (mutex spins).
MUTEX_WAITS
Quantidade de esperas de mutex.
RWLOCK_SPIN_WAITS
Total de esperas de rotação para bloqueios de leitura e gravação.
RWLOCK_SPIN_ROUNDS
Número de rodadas de rotação para bloqueios de leitura e gravação.
RWLOCK_OS_WAITS
Total de esperas do sistema operacional para bloqueios de leitura e gravação.
DATA_READS
Quantidade de leituras de arquivos de dados.
DATA_READ_TIME
Tempo gasto na leitura de arquivos de dados. Unidade: microssegundos (μs).
DATA_WRITES
Quantidade de gravações em arquivos de dados.
DATA_WRITE_TIME
Tempo gasto na gravação em arquivos de dados. Unidade: microssegundos (μs).
REDO_WRITES
Quantidade de gravações em arquivos de log.
REDO_WRITE_TIME
Tempo gasto na gravação em arquivos de log. Unidade: microssegundos (μs).
LOGICAL_READS
Total de leituras de páginas lógicas.
PHYSICAL_READS
Total de leituras de páginas físicas.
PHYSICAL_ASYNC_READS
Total de leituras assíncronas de páginas físicas.
-
Consulte a tabela
IO_STATISTICSno banco de dadosinformation_schemapara visualizar a atividade recente de leitura e gravação de dados. Por exemplo:mysql> select * from IO_STATISTICS limit 10; +---------------------+-----------+----------------+ | TIME | DATA_READ | DATA_READ_TIME | ...... +---------------------+-----------+----------------+ | 2019-08-08 09:56:53 | 73 | 983 | | 2019-08-08 09:56:57 | 0 | 0 | | 2019-08-08 09:59:17 | 0 | 0 | | 2019-08-08 10:00:55 | 4072 | 40628 | | 2019-08-08 10:00:59 | 0 | 0 | | 2019-08-08 10:01:09 | 562 | 5800 | | 2019-08-08 10:01:11 | 606 | 6910 | | 2019-08-08 10:01:13 | 609 | 6875 | | 2019-08-08 10:01:15 | 625 | 7077 | | 2019-08-08 10:01:17 | 616 | 5800 | +---------------------+-----------+----------------+A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
TIME
Carimbo de data e hora do registro.
DATA_READ
Quantidade de operações de leitura de dados.
DATA_READ_TIME
Tempo total gasto na leitura de dados. Unidade: microssegundos (μs).
DATA_READ_MAX_TIME
Tempo máximo gasto em uma única operação de leitura de dados. Unidade: microssegundos (μs).
DATA_READ_BYTES
Tamanho total dos dados lidos. Unidade: bytes.
DATA_WRITE
Quantidade de operações de gravação de dados.
DATA_WRITE_TIME
Tempo total gasto na gravação de dados. Unidade: microssegundos (μs).
DATA_WRITE_MAX_TIME
Tempo máximo gasto em uma única operação de gravação de dados. Unidade: microssegundos (μs).
DATA_WRITE_BYTES
Tamanho total dos dados gravados. Unidade: bytes.