Ajustar o desempenho e manter bancos de dados no Banco de Dados do Azure para MySQL – Servidor Flexível usando o sys_schema

APLICA-SE A:Banco de Dados do Azure para MySQL – Servidor ÚnicoBanco de Dados do Azure para MySQL – Servidor Flexível

Importante

O servidor único do Banco de Dados do Azure para MySQL está no caminho da desativação. É altamente recomendável que você atualize para o servidor flexível do Banco de Dados do Azure para MySQL. Para obter mais informações sobre a migração para o servidor flexível do Banco de Dados do Azure para MySQL, confira O que está acontecendo com o Servidor Único do Banco de Dados do Azure para MySQL?

O performance_schema do MySQL, disponível primeiramente no MySQL 5.5, fornece instrumentação para muitos recursos de servidor essenciais, como alocação de memória, programas armazenados, bloqueio de metadados etc. No entanto, o performance_schema contém mais de 80 tabelas e, a obtenção as informações necessárias, muitas vezes, exige a junção das tabelas de performance_schema, assim como das tabelas de information_schema. Com base no performance_schema e o information_schema, o sys_schema fornece uma coleção avançada de exibições amigáveis de usuário em um banco de dados somente leitura e é totalmente habilitado no servidor flexível do Banco de Dados do Azure para MySQL versão 5.7.

Exibições do sys_schema.

Há 52 exibições no sys_schema e cada uma tem um dos prefixos a seguir:

  • Host_summary ou E/S: Latências relacionadas à E/S.
  • InnoDB: Bloqueios e status do buffer InnoDB.
  • Memória: Uso de memória pelo host e pelos usuários.
  • Esquema: Informações relacionadas ao esquema, como incremento automático, índices e etc.
  • Instrução: Informações sobre instruções SQL; pode ser uma instrução que resultou em verificação de tabela completa ou tempo de consulta longa.
  • Usuário: Recursos consumidos e agrupados pelos usuários. Exemplos são E/S de arquivos, conexões e memória.
  • Aguarde: Aguarda eventos agrupados por host ou usuário.

Agora, vejamos alguns padrões comuns de uso do sys_schema. Para começar, agruparemos os padrões de uso em duas categorias: Ajuste de desempenho e Manutenção de banco de dados.

Ajuste de desempenho

sys.user_summary_by_file_io

E/S é a operação mais cara no banco de dados. É possível localizar a latência média de E/S, consultando a exibição sys.user_summary_by_file_io. Com o padrão de 125 GB de armazenamento provisionado, a latência de E/S é de aproximadamente 15 segundos.

Latência de E/S: 125 GB.

Como o servidor flexível do Banco de Dados do Azure para MySQL escala a E/S em relação ao armazenamento, após aumentar o armazenamento provisionado para 1 TB, a latência de E/S é reduzida para 571 ms.

Latência de E/S: 1 TB.

sys.schema_tables_with_full_table_scans

Apesar do planejamento cuidadoso, muitas consultas ainda podem resultar em verificações de tabela completas. Para saber mais sobre os tipos de índices e como otimizá-los, confira este artigo: Como solucionar problemas de desempenho de consultas. As verificações de tabela completas são tarefas com uso intensivo de recursos e prejudicam o desempenho do banco de dados. A maneira mais rápida de localizar tabelas com verificação de tabela completa é consultar a exibição sys.schema_tables_with_full_table_scans.

Verificações completas de tabela.

sys.user_summary_by_statement_type

Para solucionar problemas de desempenho do banco de dados, pode ser útil identificar os eventos que ocorrem dentro dele e usar a exibição sys.user_summary_by_statement_type pode ser o ideal.

Resumo por instrução.

Neste exemplo, o servidor flexível do Banco de Dados do Azure para MySQL gastou 53 minutos liberando o log de consultas lentas 44579 vezes. Isso é muito tempo e muitas E/Ss. É possível reduzir essa atividade desabilitando o log de consultas lentas ou diminuindo a frequência do logon de consultas lentas no portal do Azure.

Manutenção de banco de dados

sys.innodb_buffer_stats_by_table

[!IMPORTANT]

Consultar essa exibição pode afetar o desempenho. Recomendamos executar essa solução de problemas fora do horário comercial de pico.

O pool de buffers InnoDB reside na memória e é o mecanismo de cache principal entre o SGBD e o armazenamento. O tamanho do pool de buffers do InnoDB está vinculado ao nível de desempenho e não pode ser alterado, a menos que outro SKU de produto for escolhido. Assim como acontece com a memória no sistema operacional, as páginas antigas são trocadas para criar espaço para dados mais atuais. Para localizar quais tabelas consomem a maior parte da memória do pool de buffers InnoDB, você pode consultar a exibição sys.innodb_buffer_stats_by_table.

Status do buffer InnoDB.

No gráfico acima, é evidente que, além das exibições e tabelas do sistema, cada tabela no banco de dados mysqldatabase033, que hospeda um dos sites do WordPress, ocupa 16 KB, ou uma página, de dados na memória.

Sys.schema_unused_indexes e sys.schema_redundant_indexes

Os índices são excelentes ferramentas para melhorar o desempenho de leitura, mas eles incorrem em custos adicionais para inserções e armazenamento. Sys.schema_unused_indexes e sys.schema_redundant_indexes fornecem informações sobre índices duplicados ou não utilizados.

Índices não utilizados.

Índices redundantes.

Conclusão

Em resumo, o sys_schema é uma ótima ferramenta para ajuste de desempenho e manutenção de banco de dados. Aproveite esse recurso na instância do seu servidor flexível do Banco de Dados do Azure para MySQL.

Próximas etapas

  • Para localizar respostas de pares às suas perguntas mais preocupantes ou publicar uma nova pergunta/resposta, acesse o Stack Overflow.