Ruby on Rails

Оптимізація продуктивності

Database indexing, оптимізація запитів, gem Bullet, rack-mini-profiler, конкурентність/Puma, thread-safety, connection pool

26 питань зі співбесід·
Senior
1

Яка основна мета додавання index до стовпця бази даних?

Відповідь

Index прискорює пошукові запити, створюючи оптимізовану структуру даних (зазвичай B-tree), яка дозволяє уникнути сканування всіх рядків таблиці. Без index база даних виконує sequential scan, який може бути дуже повільним на великих таблицях. Стовпці, що часто використовуються в умовах WHERE, ORDER BY або з'єднаннях, є ідеальними кандидатами для індексування.

2

Як створити складений index на стовпцях user_id та created_at у міграції Rails?

Відповідь

Метод add_index приймає масив стовпців для створення складеного index. Порядок стовпців має значення: index буде ефективним для запитів, що фільтрують спочатку за user_id, а потім за created_at, але не для запитів, що фільтрують лише за created_at. Складений index є оптимальним для запитів, що використовують стовпці зліва направо.

3

Що таке проблема N+1 у контексті ActiveRecord?

Відповідь

Проблема N+1 виникає, коли початковий запит отримує N записів, а потім виконується N додаткових запитів для завантаження асоціацій кожного запису. Наприклад, завантаження 100 posts, а потім виконання 100 окремих запитів для авторів. Цей патерн примножує кількість запитів і суттєво погіршує продуктивність. Рішення полягає у використанні includes, preload або eager_load для завантаження асоціацій в одному чи двох запитах.

4

Який метод ActiveRecord використовувати для вирішення проблеми N+1 шляхом попереднього завантаження асоціацій?

5

Яка роль gem Bullet в оптимізації продуктивності Rails?

+23 питань зі співбесід

Інші теми співбесід Ruby on Rails

Основи Ruby

Junior
25 запитань

Об'єктно-орієнтоване програмування в Ruby

Junior
20 запитань

Основи Rails

Junior
18 запитань

Routing & Controllers

Junior
22 запитань

Основи ActiveRecord

Junior
25 запитань

Views та шаблони ERB

Junior
20 запитань

Асоціації ActiveRecord

Mid-Level
24 запитань

Розширені запити ActiveRecord

Mid-Level
28 запитань

Форми Rails

Mid-Level
20 запитань

Автентифікація та авторизація

Mid-Level
22 запитань

Сучасний Asset Pipeline та frontend

Mid-Level
18 запитань

Режим API Rails

Mid-Level
20 запитань

Тестування з RSpec

Mid-Level
24 запитань

ActiveJob & Background Jobs

Mid-Level
20 запитань

ActionCable & WebSockets

Mid-Level
18 запитань

ActionMailer

Mid-Level
18 запитань

ActiveStorage

Mid-Level
20 запитань

Стратегії кешування

Mid-Level
20 запитань

Розширені міграції

Mid-Level
20 запитань

Rails Engines та модульні застосунки

Senior
18 запитань

Патерни проєктування Rails

Senior
22 запитань

Метапрограмування в Ruby

Senior
20 запитань

Безпека Rails

Senior
22 запитань

GraphQL із Rails

Senior
20 запитань

Розгортання та Продакшн

Senior
20 запитань

Monitoring & Logging

Senior
20 запитань

Стратегії оновлення Rails

Senior
18 запитань

Опануй Ruby on Rails для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно