
Оптимізація продуктивності
Database indexing, оптимізація запитів, gem Bullet, rack-mini-profiler, конкурентність/Puma, thread-safety, connection pool
1Яка основна мета додавання index до стовпця бази даних?
Яка основна мета додавання index до стовпця бази даних?
Відповідь
Index прискорює пошукові запити, створюючи оптимізовану структуру даних (зазвичай B-tree), яка дозволяє уникнути сканування всіх рядків таблиці. Без index база даних виконує sequential scan, який може бути дуже повільним на великих таблицях. Стовпці, що часто використовуються в умовах WHERE, ORDER BY або з'єднаннях, є ідеальними кандидатами для індексування.
2Як створити складений index на стовпцях user_id та created_at у міграції Rails?
Як створити складений index на стовпцях user_id та created_at у міграції Rails?
Відповідь
Метод add_index приймає масив стовпців для створення складеного index. Порядок стовпців має значення: index буде ефективним для запитів, що фільтрують спочатку за user_id, а потім за created_at, але не для запитів, що фільтрують лише за created_at. Складений index є оптимальним для запитів, що використовують стовпці зліва направо.
3Що таке проблема N+1 у контексті ActiveRecord?
Що таке проблема N+1 у контексті ActiveRecord?
Відповідь
Проблема N+1 виникає, коли початковий запит отримує N записів, а потім виконується N додаткових запитів для завантаження асоціацій кожного запису. Наприклад, завантаження 100 posts, а потім виконання 100 окремих запитів для авторів. Цей патерн примножує кількість запитів і суттєво погіршує продуктивність. Рішення полягає у використанні includes, preload або eager_load для завантаження асоціацій в одному чи двох запитах.
Який метод ActiveRecord використовувати для вирішення проблеми N+1 шляхом попереднього завантаження асоціацій?
Яка роль gem Bullet в оптимізації продуктивності Rails?
+23 питань зі співбесід
Інші теми співбесід Ruby on Rails
Основи Ruby
Об'єктно-орієнтоване програмування в Ruby
Основи Rails
Routing & Controllers
Основи ActiveRecord
Views та шаблони ERB
Асоціації ActiveRecord
Розширені запити ActiveRecord
Форми Rails
Автентифікація та авторизація
Сучасний Asset Pipeline та frontend
Режим API Rails
Тестування з RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Стратегії кешування
Розширені міграції
Rails Engines та модульні застосунки
Патерни проєктування Rails
Метапрограмування в Ruby
Безпека Rails
GraphQL із Rails
Розгортання та Продакшн
Monitoring & Logging
Стратегії оновлення Rails
Опануй Ruby on Rails для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно