
Optymalizacja wydajności
Database indexing, optymalizacja zapytań, gem Bullet, rack-mini-profiler, współbieżność/Puma, thread-safety, connection pool
1Jaki jest główny cel dodania index do kolumny bazy danych?
Jaki jest główny cel dodania index do kolumny bazy danych?
Odpowiedź
Index przyspiesza zapytania wyszukiwania, tworząc zoptymalizowaną strukturę danych (zwykle B-tree), która unika skanowania wszystkich wierszy w tabeli. Bez index baza danych wykonuje sequential scan, który może być bardzo wolny na dużych tabelach. Kolumny często używane w klauzulach WHERE, ORDER BY lub złączeniach są idealnymi kandydatami do indeksowania.
2Jak utworzyć złożony index na kolumnach user_id i created_at w migracji Rails?
Jak utworzyć złożony index na kolumnach user_id i created_at w migracji Rails?
Odpowiedź
Metoda add_index przyjmuje tablicę kolumn, aby utworzyć złożony index. Kolejność kolumn ma znaczenie: index będzie wydajny dla zapytań filtrujących najpierw po user_id, a następnie po created_at, ale nie dla zapytań filtrujących tylko po created_at. Złożony index jest optymalny dla zapytań używających kolumn od lewej do prawej.
3Czym jest problem N+1 w kontekście ActiveRecord?
Czym jest problem N+1 w kontekście ActiveRecord?
Odpowiedź
Problem N+1 występuje, gdy początkowe zapytanie pobiera N rekordów, a następnie wykonywanych jest N dodatkowych zapytań w celu załadowania asocjacji każdego rekordu. Na przykład załadowanie 100 postów, a następnie wykonanie 100 osobnych zapytań o autorów. Ten wzorzec zwielokrotnia liczbę zapytań i poważnie pogarsza wydajność. Rozwiązaniem jest użycie includes, preload lub eager_load, aby załadować asocjacje w jednym lub dwóch zapytaniach.
Której metody ActiveRecord użyć, aby rozwiązać problem N+1 przez wcześniejsze załadowanie asocjacji?
Jaka jest rola gem Bullet w optymalizacji wydajności Rails?
+23 pytań z rozmów
Inne tematy rekrutacyjne Ruby on Rails
Podstawy Ruby
Programowanie obiektowe w Ruby
Podstawy Rails
Routing & Controllers
Podstawy ActiveRecord
Widoki i szablony ERB
Asocjacje ActiveRecord
Zaawansowane zapytania ActiveRecord
Formularze Rails
Uwierzytelnianie i autoryzacja
Nowoczesny Asset Pipeline i frontend
Tryb API Rails
Testowanie z RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Strategie cachowania
Zaawansowane migracje
Rails Engines i aplikacje modułowe
Wzorce projektowe w Rails
Metaprogramowanie w Ruby
Bezpieczeństwo Rails
GraphQL z Rails
Wdrażanie i Produkcja
Monitoring & Logging
Strategie aktualizacji Rails
Opanuj Ruby on Rails na następną rozmowę
Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.
Zacznij za darmo