Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Relational Database Service/ Melhores práticas/ RDS for MySQL/ Ajuste de desempenho/ Ajuste de desempenho do RDS for MySQL – resolução de problemas de I/O alta
Atualizado em 2024-09-24 GMT+08:00

Ajuste de desempenho do RDS for MySQL – resolução de problemas de I/O alta

Esta seção descreve como solucionar problemas de I/O alta para instâncias de BD do RDS for MySQL. O desempenho de I/O de sua instância depende de três fatores: a mídia de armazenamento, a arquitetura do mecanismo de banco de dados e as instruções SQL que são executadas para verificar ou modificar uma quantidade específica de dados.

I/O alta causada pelo alta taxa de transferência

  • Sintoma

    Se sua aplicação frequentemente iniciar solicitações para atualizar, excluir e inserir dados nas tabelas que contêm muitos índices ou campos grandes, a I/O de sua instância aumentará significativamente devido às leituras de dados e às descargas de páginas sujas.

    Para exibir o desempenho de leitura/gravação, clique em View Metrics na coluna Operation.

  • Solução

    Modifique parâmetros de instância para reduzir a frequência de leitura/gravação, atualizar especificações de instância ou ajustar as configurações de parâmetros de limpeza de página suja. Os parâmetros de limpeza de página suja são explicados da seguinte forma:

    innodb_max_dirty_pages_pct: a porcentagem de páginas sujas permitidas no pool de buffer. Valor padrão: 75.

    innodb_io_capacity: o número máximo de operações de I/O permitidas pelo InnoDB por segundo para cada tarefa em segundo plano. O valor desse parâmetro afeta a velocidade com que o RDS libera páginas sujas no disco e a velocidade com que o RDS grava dados no pool de buffer. O valor padrão varia dependendo do tipo de disco.

    innodb_io_capacity_max: o número máximo de operações de I/O permitidas pelo InnoDB por segundo para cada tarefa em segundo plano quando a atividade de descarga fica atrasada. O valor deste parâmetro é maior que o valor de innodb_io_capacity. O valor padrão de innodb_io_capacity_max é 40000.

I/O alta causada por tabelas temporárias

  • Sintoma

    Se o tamanho do diretório temporário for muito grande, o RDS pode ter criado tabelas temporárias grandes devido a operações como a classificação e a desduplicação de instruções SQL lentas. Isso aumenta a I/O da instância. As gravações de dados em tabelas temporárias também aumentam a I/O da instância.

    Para exibir a criação da tabela temporária, clique em EView Metrics na coluna Operation.

I/O alta causada por leituras de dados frios

  • Sintoma

    Se os dados que são consultados ou modificados usando instruções SQL não puderem ser atingidos no pool de buffer, o RDS precisará ler os dados dos discos. Isso pode aumentar significativamente a I/O da sua instância.

    Para exibir a taxa de acertos do pool de buffers, clique em View Metrics na coluna Operation.

I/O alta causada por gravações de binlog de grandes transações

  • Sintoma

    Uma transação só grava registros de log em arquivos binlog quando é confirmada. Se o aplicativo executar uma transação grande, a transação poderá gravar algumas dezenas de GB de dados em arquivos binlog, por exemplo, se a transação contiver uma instrução DELETE usada para excluir um grande número de linhas. Quando esses arquivos binlog são descarregados no disco, a I/O da instância aumenta significativamente.

  • Solução

    É aconselhável dividir grandes transações. Isso permite reduzir as descargas de páginas sujas no disco.

Introdução ao sistema de I/O de InnoDB

O InnoDB usa um sistema de I/O independente para ler e gravar páginas de dados. Se uma página de dados solicitada por uma instrução SQL não puder ser atingida no pool de buffers, as operações de I/O físicas serão executadas para ler e gravar dados no disco.

  • Operações para ler páginas de dados

    A interface de leitura subjacente é chamada com base na I/O síncrona para ler páginas de dados.

  • Operações para gravar páginas de dados

    Tomemos as descargas de páginas sujas, por exemplo. Os threads de I/O em segundo plano são chamados com base na I/O assíncrona para descarregar de forma assíncrona as páginas sujas no disco.

    Além das operações de I/O em arquivos de dados comuns, várias outras operações também podem aumentar significativamente a I/O de sua instância. Essas operações incluem as operações para gravar redo logs, desfazer logs e binlogs, as operações para classificar tabelas temporárias e as operações para reconstruir tablespaces devido a instruções DDL.