Ruby on Rails

Otimização de desempenho

Database indexing, otimização de consultas, gem Bullet, rack-mini-profiler, concorrência/Puma, thread-safety, connection pool

26 perguntas de entrevista·
Senior
1

Qual é o objetivo principal de adicionar um index em uma coluna do banco de dados?

Resposta

Um index acelera as consultas de busca ao criar uma estrutura de dados otimizada (geralmente um B-tree) que evita escanear todas as linhas da tabela. Sem index, o banco de dados realiza um sequential scan que pode ser muito lento em tabelas grandes. Colunas usadas com frequência em cláusulas WHERE, ORDER BY ou joins são candidatas ideais para indexação.

2

Como criar um index composto nas colunas user_id e created_at em uma migration do Rails?

Resposta

O método add_index aceita um array de colunas para criar um index composto. A ordem das colunas importa: o index será eficiente para consultas que filtram primeiro por user_id e depois por created_at, mas não para consultas que filtram apenas por created_at. Um index composto é ideal para consultas que usam as colunas da esquerda para a direita.

3

O que é o problema N+1 no contexto do ActiveRecord?

Resposta

O problema N+1 ocorre quando uma consulta inicial recupera N registros e, em seguida, N consultas adicionais são executadas para carregar as associações de cada registro. Por exemplo, carregar 100 posts e depois fazer 100 consultas individuais para os autores. Esse padrão multiplica o número de consultas e degrada gravemente o desempenho. A solução é usar includes, preload ou eager_load para carregar as associações em uma ou duas consultas.

4

Qual método do ActiveRecord usar para resolver o problema N+1 carregando as associações antecipadamente?

5

Qual é o papel do gem Bullet na otimização de desempenho do Rails?

+23 perguntas de entrevista

Domine Ruby on Rails para sua proxima entrevista

Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.

Comece gratis