Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — INSTITUTO AOCP 2024

Banco de DadosMySQL
Código
qg263653
Banca
INSTITUTO AOCP
Órgão
UFTM
Ano
2024
Nível
Médio
Cargo
Técnico em Tecnologia da Informação - Todas as Áreas
Você é um técnico em TI na UFTM e está encarregado de otimizar o desempenho de um banco de dados MySQL que gerencia informações acadêmicas extensas. Após análises iniciais, você percebe que as operações de escrita estão significativamente lentas. Qual das seguintes ações é a mais adequada para realizar o tunning de desempenho do banco de dados para essas operações?
  1. AAumentar o tamanho do InnoDB Buffer Pool.
  2. BDesativar o log binário do MySQL.
  3. CAlterar as tabelas para o formato de armazenamento MyISAM.
  4. DAjustar o valor da variável max_connections para um número maior.
Revelar gabarito e comentário

GabaritoA — Aumentar o tamanho do InnoDB Buffer Pool.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Tuning de desempenho no MySQL: InnoDB Buffer Pool

Gabarito: letra A. Para acelerar operações de escrita em um banco MySQL com o motor InnoDB, a ação mais adequada entre as listadas é aumentar o tamanho do InnoDB Buffer Pool. Esse buffer é a área de memória que o InnoDB usa para cachear dados e índices, reduzindo drasticamente a necessidade de acesso ao disco — que é o principal gargalo em operações de escrita. As demais alternativas ou não atacam diretamente o problema (max_connections), ou trazem prejuízos graves (desativar log binário, trocar para MyISAM).

O InnoDB Buffer Pool é uma das variáveis mais importantes para o desempenho do MySQL quando se usa o motor de armazenamento InnoDB (o padrão desde o MySQL 5.5). Ele funciona como uma cache em memória das páginas de dados e índices. Quando uma operação de escrita (INSERT, UPDATE, DELETE) precisa modificar uma página, o InnoDB primeiro verifica se essa página já está no buffer pool. Se estiver, a modificação é feita em memória e, posteriormente, gravada no disco de forma assíncrona (através do mecanismo de flush). Se não estiver, a página precisa ser lida do disco antes de ser modificada — e essa leitura de disco é extremamente lenta comparada ao acesso à memória.

Portanto, quanto maior o buffer pool, maior a probabilidade de as páginas necessárias já estarem em memória, reduzindo o número de operações de I/O de disco. Isso beneficia tanto leituras quanto escritas, pois as escritas dependem de ler a página antes de modificá-la (no caso de updates). Aumentar o buffer pool é uma prática clássica e recomendada de tuning para bancos InnoDB, especialmente em servidores com memória RAM disponível.

Vamos entender por que as outras opções não são adequadas:

  • Desativar o log binário (B): o log binário registra todas as alterações feitas no banco, sendo essencial para replicação e recuperação point-in-time. Desativá-lo pode até melhorar marginalmente a performance de escrita (por não gravar os logs), mas compromete gravemente a segurança e a capacidade de recuperação dos dados. Não é uma prática recomendada de tuning, pois sacrifica funcionalidades críticas.

  • Alterar para MyISAM (C): o MyISAM é um motor de armazenamento mais antigo, que não suporta transações ACID, chaves estrangeiras ou controle de concorrência no nível de linha. Migrar tabelas InnoDB para MyISAM para melhorar escrita é um retrocesso: perde-se integridade referencial e atomicidade, e o MyISAM usa table-level locking, o que pode até piorar a concorrência em operações de escrita. Além disso, o MyISAM é mais rápido em leituras, mas não necessariamente em escritas, e sacrifica recursos essenciais.

  • Ajustar max_connections (D): essa variável define o número máximo de conexões simultâneas que o servidor aceita. Aumentá-la não acelera as operações de escrita; pelo contrário, se o servidor não tiver recursos suficientes, mais conexões podem causar contenção e degradar o desempenho geral. O gargalo de escrita não está no número de conexões, mas sim na capacidade de processar as transações e gravar os dados.

A pegadinha desta questão está em confundir otimização de escrita com outras métricas de desempenho. O candidato pode ser tentado a escolher a opção B (desativar log binário) por parecer uma "solução rápida", ou a opção D (max_connections) por associar desempenho a mais conexões. No entanto, a alternativa que ataca diretamente o gargalo de I/O — a causa mais comum de lentidão em escritas — é o aumento do buffer pool.

NÃO CAIA NESSA!

A banca explora a confusão entre otimização de escrita e otimização de conexões. Aumentar max_connections não acelera escritas; na verdade, pode até piorar o desempenho se o servidor ficar sobrecarregado. O caminho correto é reduzir o I/O de disco, e o buffer pool é a ferramenta certa para isso. Fique atento: a questão pede "tunning para operações de escrita", não "aumentar a capacidade de conexões".

Tuning de escrita no MySQL (InnoDB)
  • 1Aumentar InnoDB Buffer Pool
    • Cache de dados e índices em memória
    • Reduz I/O de disco (gargalo)
  • 2Desativar log binário
    • Perde replicação e recuperação point-in-time
  • 3Migrar para MyISAM
    • Sem transações ACID
    • Table-level locking (piora concorrência)
  • 4Aumentar max_connections
    • Não ataca o gargalo de escrita
    • Pode causar contenção
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Aumentar o InnoDB Buffer Pool é a ação mais adequada para melhorar o desempenho de operações de escrita. O buffer pool armazena em memória as páginas de dados e índices, reduzindo a necessidade de leituras de disco antes de cada modificação. Com mais memória disponível para o buffer, mais páginas ficam cacheadas, e as escritas se tornam mais rápidas por evitar o acesso ao disco. É uma prática recomendada de tuning para o motor InnoDB.

Alternativa B — ❌ Incorreta

Desativar o log binário pode até reduzir a sobrecarga de escrita, mas compromete a replicação e a recuperação point-in-time. O log binário é essencial para a segurança e integridade dos dados; desativá-lo para ganhar performance é uma troca inaceitável na maioria dos cenários. Não é uma prática de tuning recomendada.

Alternativa C — ❌ Incorreta

Alterar as tabelas para MyISAM é um retrocesso. O MyISAM não suporta transações ACID, chaves estrangeiras e usa table-level locking, o que pode piorar a concorrência em escritas. Além disso, o InnoDB é o motor padrão e mais robusto do MySQL; migrar para MyISAM para ganhar desempenho de escrita é uma decisão equivocada, pois sacrifica recursos críticos.

Alternativa D — ❌ Incorreta

Ajustar max_connections para um número maior não acelera operações de escrita. Essa variável controla o número máximo de conexões simultâneas, e aumentá-la sem recursos suficientes pode causar contenção e degradar o desempenho. O gargalo de escrita está no I/O de disco, não no número de conexões.

Gabarito: letra A

Link permanente: /questoes/qg263653