Ruby on Rails

Optimización del rendimiento

Database indexing, optimización de consultas, gem Bullet, rack-mini-profiler, concurrencia/Puma, thread-safety, connection pool

26 preguntas de entrevista·
Senior
1

¿Cuál es el objetivo principal de agregar un index sobre una columna de la base de datos?

Respuesta

Un index acelera las consultas de búsqueda al crear una estructura de datos optimizada (generalmente un B-tree) que evita escanear todas las filas de la tabla. Sin index, la base de datos realiza un sequential scan que puede ser muy lento en tablas grandes. Las columnas usadas con frecuencia en cláusulas WHERE, ORDER BY o joins son candidatas ideales para la indexación.

2

¿Cómo crear un index compuesto sobre las columnas user_id y created_at en una migration de Rails?

Respuesta

El método add_index acepta un array de columnas para crear un index compuesto. El orden de las columnas importa: el index será eficiente para las consultas que filtran primero por user_id y luego por created_at, pero no para las consultas que filtran únicamente por created_at. Un index compuesto es óptimo para las consultas que usan las columnas de izquierda a derecha.

3

¿Qué es el problema N+1 en el contexto de ActiveRecord?

Respuesta

El problema N+1 ocurre cuando una consulta inicial recupera N registros y luego se ejecutan N consultas adicionales para cargar las asociaciones de cada registro. Por ejemplo, cargar 100 posts y luego hacer 100 consultas individuales para los autores. Este patrón multiplica el número de consultas y degrada gravemente el rendimiento. La solución es usar includes, preload o eager_load para cargar las asociaciones en una o dos consultas.

4

¿Qué método de ActiveRecord usar para resolver el problema N+1 cargando las asociaciones por adelantado?

5

¿Cuál es el rol del gem Bullet en la optimización del rendimiento de Rails?

+23 preguntas de entrevista

Domina Ruby on Rails para tu próxima entrevista

Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.

Empieza gratis