Laravel

Performance Optimization

Optymalizacja zapytań, problem N+1, eager loading, lazy loading, strategie cache'owania, indeksowanie bazy danych, narzędzia profilowania

22 pytań z rozmów·
Senior
1

Czym jest problem N+1 w Laravel?

Odpowiedź

Problem N+1 występuje, gdy Eloquent wykonuje jedno zapytanie, aby pobrać kolekcję, a następnie dodatkowe zapytanie na każdy element, aby załadować relację. Mnoży to dostępy do bazy danych i poważnie pogarsza wydajność przy dużej skali. Użycie eager loading z with() ładuje wszystkie relacje w jednym dodatkowym zapytaniu zamiast N zapytań.

2

Której metody należy użyć, aby rozwiązać problem N+1 podczas ładowania relacji?

Odpowiedź

Metoda with() wykonuje eager loading, który ładuje relacje w jednym dodatkowym zapytaniu. Zamiast wykonywać jedno zapytanie na model podczas dostępu do relacji, wszystkie relacje są ładowane z wyprzedzeniem. Drastycznie zmniejsza to liczbę zapytań SQL i poprawia wydajność.

3

Jaka jest różnica między eager loading a lazy loading?

Odpowiedź

Eager loading ładuje relacje natychmiast wraz z głównym zapytaniem za pomocą with(), podczas gdy lazy loading ładuje relacje na żądanie przy pierwszym dostępie. Lazy loading może powodować problem N+1, jeśli relacje są pobierane w pętli. Eager loading jest zalecany, gdy relacje będą używane, aby uniknąć wielu zapytań.

4

Jaką rolę pełni Cache::remember() w Laravel?

5

Jaka jest różnica między Cache::remember() a Cache::rememberForever()?

+19 pytań z rozmów

Opanuj Laravel 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