Dlaczego wyszukiwanie w Plex może zwalniać wraz ze wzrostem ilości danych 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 Plex może zwalniać wraz ze wzrostem ilości danych biblioteki, ale sam rozmiar bazy danych nie wyjaśnia, która część ścieżki zapytania faktycznie wykonuje się dłużej.

Większa biblioteka oznacza więcej wierszy, metadanych, relacji, grafik i stanów, którymi serwer musi zarządzać. Jednak dobrze indeksowane wyszukiwanie może nadal działać szybko, podczas gdy mniejsza baza danych będzie działać słabo przy braku danych w pamięci podręcznej lub opóźnieniach pamięci masowej. Trafna diagnoza oddziela kształt zapytania, użycie indeksów, rozmiar zestawu roboczego, opóźnienia operacji wejścia-wyjścia i zapisy wykonywane w tle, zanim uzna się, że to sam wzrost jest wąskim gardłem.

Koszt wyszukiwania zmienia się wraz ze wzrostem zestawu roboczego

Większa ilość danych biblioteki zwiększa zakres informacji, które wyszukiwanie lub filtrowanie może wymagać przeanalizowania, zwłaszcza gdy żądanie obejmuje szerokie pola tekstowe, relacje, sortowanie lub kilka tabel metadanych. Wzrost staje się widoczny, gdy odpowiedni zestaw roboczy nie mieści się już w tej samej pamięci podręcznej albo zapytanie przegląda więcej wierszy niż wcześniej.

Plex przechowuje dane biblioteki i metadane w bazie danych SQLite. Ważne jest nie to, że każde wyszukiwanie w Plex zwalnia po osiągnięciu określonego rozmiaru biblioteki, lecz to, że większy zestaw roboczy może częściej ujawniać nieefektywne wzorce dostępu, braki danych w pamięci podręcznej lub wolniejszą pamięć masową.

Porównaj to samo wyszukiwanie przed znacznym powiększeniem biblioteki i po nim, a także zestaw wąskie wyszukiwanie z szerokim zapytaniem. Jeśli źle skaluje się tylko szerokie wyszukiwanie, problem jest bardziej szczegółowy niż „baza danych jest zbyt duża”.

Jakość indeksów ma większe znaczenie niż sam rozmiar bazy danych

Indeksy pozwalają bazie danych znaleźć odpowiednie wiersze bez przeszukiwania wszystkiego, ale tylko wtedy, gdy zapytanie może użyć właściwego indeksu. Brakujące, źle dopasowane lub rozrośnięte indeksy mogą więc ujawnić problemy związane ze wzrostem znacznie wcześniej, niż sugerowałby sam rozmiar pliku.

Indeksy ograniczają niepotrzebne skanowanie, gdy odpowiadają wzorcowi zapytania. Ta zasada pomaga zrozumieć działanie zapytań, ale nie należy na jej podstawie ręcznie edytować schematu bazy danych Plex.

Korzystaj ze wspieranych przez Plex ścieżek naprawy i konserwacji, zamiast dodawać niestandardowe indeksy do używanej biblioteki bez planu odzyskiwania. Celem diagnozy jest ustalenie, czy operacje bazy danych są etapem powodującym spowolnienie, a nie przeprojektowanie schematu należącego do aplikacji z zewnątrz.

Braki danych w pamięci podręcznej i opóźnienia pamięci masowej mogą wydłużać zapytania

Wyszukiwanie wykonane niedawno ponownie może zostać obsłużone z rozgrzanych stron lub pamięci podręcznej systemu plików, podczas gdy to samo zapytanie po wystąpieniu presji na pamięć może wymagać odczytania większej ilości danych z pamięci masowej. W efekcie rosnący zestaw roboczy może wyglądać jak czysty problem z bazą danych, nawet jeśli widoczna zmiana dotyczy opóźnień operacji wejścia-wyjścia.

Pamięć masowa i działanie pamięci podręcznej wpływają na odczyty. Szybsza pamięć masowa może zmniejszyć koszt braków danych w pamięci podręcznej, ale nie eliminuje nieefektywnej pracy zapytań ani nie gwarantuje, że większa biblioteka zmieści się w pamięci.

Zmierz to samo wyszukiwanie w warunkach rozgrzanej i chłodniejszej pamięci podręcznej, jednocześnie obserwując opóźnienia urządzenia. Jeśli zapytanie jest szybkie przy danych w pamięci podręcznej, a zwalnia tylko wtedy, gdy trzeba sięgnąć do pamięci masowej, kolejne pytanie powinno dotyczyć obecności zestawu roboczego w pamięci i operacji wejścia-wyjścia, a nie wyłącznie wydajności procesora.

-15% OFF

Zapisy w tle i kondycja bazy danych mogą powodować opóźnienia

Skanowanie biblioteki, aktualizacje metadanych, zmiany stanu odtwarzania i konserwacja mogą nakładać się na odczyty. Równoległe zapisy mogą zwiększać liczbę operacji związanych z blokadami lub wejściem-wyjściem, a uszkodzenie albo zły stan bazy danych może powodować objawy, których nie należy przypisywać normalnemu wzrostowi.

Obciążenia SQLite z przewagą odczytów mogą znacząco zmienić się po konserwacji bazy danych i zmianach układu danych. Dlatego stan konserwacji należy odnotować podczas porównywania wydajności wyszukiwania w czasie, a nie traktować go jako powodu do uruchamiania ogólnych poleceń optymalizacyjnych na bazie Plex bez kopii zapasowych.

Powtórz wolne wyszukiwanie w spokojnym okresie oraz podczas znanego skanowania lub zadania związanego z metadanymi. Jeśli opóźnienie pojawia się tylko przy aktywności w tle, zaplanuj tę pracę lub odizoluj ją, zanim uznasz rozmiar biblioteki za trwałe ograniczenie.

Sprawdź, czy opóźnienie zależy od rozmiaru, pamięci podręcznej czy pamięci masowej

Przydatna macierz testowa utrzymuje zapytanie bez zmian, zmieniając tylko jeden warunek: rozgrzana lub chłodniejsza pamięć podręczna, spokojna lub aktywna praca w tle oraz standardowa lub znana jako szybka pamięć masowa. Pierwszy warunek, który niezawodnie zmienia czas tego samego wyszukiwania, dostarcza więcej informacji niż sam rozmiar pliku bazy danych.

Wolne działanie biblioteki pojawia się w przypadkach zgłaszanych przez społeczność dotyczących dużych bibliotek, ale raporty te nie dowodzą istnienia jednej uniwersalnej przyczyny ani progu rozmiaru.

Jeśli trzeba oddzielić operacje pamięci masowej i bazy danych od pozostałej części potoku multimediów, prześledź ścieżkę danych Plex według ról. Wydajność wyszukiwania staje się możliwa do poprawy, gdy zostanie wskazany wolny etap — operacje zapytania, pamięć podręczna, pamięć masowa lub równoległa konserwacja — a nie tylko wtedy, gdy biblioteka przekroczy dużą liczbę elementów.

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.