Pergunta de entrevista para Engenheiro de Software

Como funciona um índice de banco de dados, e quando adicionar um piora as coisas?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Um índice é uma estrutura ordenada separada, geralmente uma árvore B, mapeando valores de coluna para localizações de linha para o engine poder buscar em vez de varrer. Ele acelera leituras que filtram ou ordenam por essas colunas. Ele custa nas escritas, já que cada insert, update e delete tem que mantê-lo, e custa armazenamento. Colunas de baixa seletividade e índices que nada consulta costumam ser prejuízo líquido.

Por que os entrevistadores perguntam isso

Índices são a ferramenta de maior alavancagem disponível para a maioria dos engenheiros e a mais fácil de virar culto de carga. O entrevistador está checando se você entende o lado de escrita da troca, se você sabe que a seletividade determina se o planner vai sequer usar o índice, e se você consegue explicar por que indexar toda coluna não é estratégia. Também abre a porta para planejamento de queries.

Como estruturar sua resposta

  • Descreva o índice como uma estrutura de busca ordenada com ponteiros para linhas.
  • Explique o benefício de leitura em termos de seeks versus varreduras.
  • Cite os custos de escrita e de armazenamento explicitamente.
  • Dê um caso em que o planner ignora o índice mesmo assim.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Um índice é essencialmente uma cópia ordenada de uma ou mais colunas com ponteiros de volta para as linhas, geralmente uma árvore B, para o engine poder fazer busca binária em vez de ler cada página. Isso transforma um filtro numa tabela grande de uma varredura sequencial em um punhado de leituras de página. O custo é que toda escrita tem que atualizar o índice também, então uma tabela com oito índices paga oito vezes no insert, e cargas em massa ficam bem mais lentas. A outra coisa que eu observo é a seletividade. Se uma coluna é um booleano que é verdadeiro em noventa por cento das linhas, o planner geralmente vai só varrer, porque acesso aleatório a tantas linhas custa mais do que ler sequencialmente. Tive um caso em que alguém adicionou um índice numa coluna de status com três valores e nada melhorou. O que de fato resolveu foi um índice composto em tenant id e created at, casando com o filtro e a ordenação, para o banco poder buscar e depois ler em ordem sem um passo separado de ordenação.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Por que a ordem das colunas importa num índice composto?
  • O que um índice de cobertura te dá?
  • Como você saberia se o planner está usando o seu índice?

Mais perguntas para Engenheiro de Software

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot