Dlaczego wyszukiwanie w Jellyfin zwalnia wraz ze wzrostem biblioteki

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Wyszukiwanie w Jellyfin może zwalniać wraz z rozrostem biblioteki, gdy wykonywanie zapytań lub zbiór roboczy przekroczy możliwości wydajnych indeksów i ponownego wykorzystania pamięci podręcznej.

Sam rozrost biblioteki nie świadczy jeszcze o problemie z bazą danych. Większy katalog może zmienić liczbę rekordów, relacji i odwołań do grafik, a skanowanie lub zapisy w tle mogą zwiększać rywalizację o zasoby. Nie zmieniaj zapytania ani klienta, a następnie oddziel czas działania bazy danych od ładowania obrazów i renderowania interfejsu.

Rozrost zmienia zakres pracy zapytania

Rozrastająca się biblioteka dodaje tytuły, osoby, gatunki, ścieżki, identyfikatory dostawców i relacje, które wyszukiwanie może sprawdzać lub łączyć. Koszt zależy od struktury zapytania i dopasowania indeksów, a nie tylko od liczby bajtów multimediów.

Skorzystaj z modelu trwałych ról danych, aby myśleć o rekordach i relacjach zamiast o jednej liczbie określającej „rozmiar biblioteki”.

Duża kolekcja plików filmowych może nadal działać sprawnie, jeśli liczba indeksowanych obiektów jest niewielka, natomiast wiele małych elementów może szybko zwiększyć zakres pracy zapytań.

Indeksy muszą pasować do struktury zapytania

Indeks pomaga wtedy, gdy kolejność kluczy i selektywność odpowiadają używanym filtrom lub kolejności sortowania. Zapytanie obejmujące szerokie wyszukiwanie tekstowe, łączące kilka relacji albo sortujące duży wynik nadal może skanować więcej danych niż wąskie wyszukiwanie.

Porównaj zapytanie z ogólnym wyjaśnieniem opóźnienia i przepustowości pamięci masowej, które opisuje różnice między opóźnieniem pamięci masowej a wzorcami dostępu; dokładny wynik Jellyfin zależy od jego bazy danych i ścieżki klienta.

Najbardziej miarodajny pomiar to wykonanie tego samego zapytania przed rozrostem biblioteki i po nim, a nie benchmark oparty na innym schemacie wyszukiwania.

Pamięć podręczna i pamięć masowa mogą udawać koszt zapytania

Niezaładowane strony bazy danych, pliki grafik i metadane systemu plików mogą sprawiać, że wyszukiwanie wydaje się wolniejsze, nawet gdy plan zapytania się nie zmienił. Skanowanie lub kopie zapasowe wykonywane w tle mogą zwiększać kolejkę i usuwać przydatne strony z pamięci między kolejnymi uruchomieniami.

Przed obwinieniem rozrostu katalogu rozdziel przypadki zimnego i ciepłego uruchomienia, korzystając z metody benchmarku zimnego i ciepłego uruchomienia.

Jeśli drugie wyszukiwanie jest szybkie, ale pierwsze wolne, pamięć podręczna lub pamięć masowa ma wpływ na działanie. Jeśli oba są wolne, większą uwagę należy poświęcić pracy zapytania lub rywalizacji o zasoby bazy danych.

-15% OFF

Sprawdź przyczynę i wyklucz czynniki mylące

Mierz osobno czas zapytania, renderowanie wyników, ładowanie obrazów, opóźnienie pamięci masowej i zapisy wykonywane w tle. Następnie powtórz pomiar po wstrzymaniu jednego konkurencyjnego zadania lub zmianie jednej zmiennej żądania.

Krótki schemat pracy z zachowaniem klienta Jellyfin może pokazać, czy problem dotyczy pracy bazy danych, ścieżki obrazów czy interfejsu klienta.

Przestań przypisywać spowolnienie rozrostowi biblioteki, jeśli usunięcie innej przyczyny przywraca wcześniejszą wydajność. Rozrost jest warunkiem, ale mechanizm ograniczający wydajność nadal wymaga potwierdzenia.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.