Przyspiesz zapytania ownCloud 10, bezpiecznie zarządzając indeksami

W przypadku ownCloud 10 zacznij od wprowadzenia zmian schematu dostarczonych przez zainstalowane jądro i aplikacje, a następnie sprawdź, które zapytania do bazy danych są faktycznie powolne. Nie dodawaj indeksów bezmyślnie ani nie zakładaj, że polecenie Nextcloud db:add-missing-indicesjest obsługiwanym poleceniem naprawy ownCloud 10: aktualna dokumentacja OCC serwera ownCloud 10.15 tego nie dokumentuje. Indeksy mogą przyspieszyć odczytywanie danych, ale każdy dodany indeks zużywa pamięć masową i zwiększa nakład pracy związany z wstawianiem, aktualizacją i usuwaniem danych.

To podejście jest odpowiednie dla administratora, który ma powolne działanie strony ownCloud, listy plików lub aplikacji i ma dostęp do serwera i bazy danych. Jeśli cała instancja działa wolno lub działa na serwerze SQLite z wieloma aktywnymi użytkownikami, należy sprawdzić ogólną konfigurację bazy danych i wdrożenia, zanim uzna się, że przyczyną są indeksy.

Wybierz zmianę, która odpowiada dowodom

Indeks bazy danych to struktura pomocnicza, która pomaga bazie danych lokalizować wiersze bez konieczności skanowania całej tabeli. Własna platforma chmurowa i jej aplikacje definiują tabele, kolumny i indeksy jako część swojego schematu. Aktualizacje rdzenia i aplikacji mogą obejmować migracje schematów, które tworzą lub dostosowują te indeksy. Dlatego najbezpieczniejszym pierwszym krokiem jest utrzymanie aktualności schematu aplikacji.

Przed wprowadzeniem jakichkolwiek zmian należy zastosować się do poniższych rozróżnień:

  • Ostrzeżenie administratora lub znany problem z aktualizacją: wykonaj standardową procedurę aktualizacji ownCloud i sprawdź jej wyniki. Migracje aktualizacji to obsługiwana ścieżka zmian schematu dostarczana przez ownCloud lub aplikację.
  • Znany problem z powolnym zapytaniem i nieefektywnym planem wykonania: administrator bazy danych powinien sprawdzić zapytanie i ustalić plan. Docelowy indeks może pomóc, ale proponowane kolumny i kolejność muszą być zgodne z zapytaniem i definicją tabeli.
  • Powolne przesyłanie danych, blokowanie lub szeroko rozumiana niezgodność: sprawdź transakcje, opóźnienia w pamięci masowej, pojemność bazy danych i blokowanie plików. Same te objawy nie dowodzą braku indeksu.
  • Mała instalacja SQLite staje się wielodostępna: rozważ migrację do MySQL/MariaDB lub PostgreSQL. ownCloud opisuje SQLite jako odpowiedni do testowania i małych obciążeń pojedynczego użytkownika, podczas gdy wdrożenia produkcyjne dla wielu użytkowników powinny używać obsługiwanej bazy danych serwera.

Indeks nie jest ogólnym przełącznikiem szybkości. Większa liczba indeksów może usprawnić wybrane wyszukiwania, jednocześnie zwiększając rozmiar bazy danych i opóźnienie zapisu. Wynik zależy od kształtu zapytania, rozmiaru tabeli, dystrybucji danych, silnika bazy danych i stanu pamięci podręcznej.

Przygotuj bezpieczne okno konserwacyjne

  1. Zapisz dokładne wersje i bazę danych. Z katalogu instalacyjnego ownCloud uruchom polecenie sudo -u www-data ./occ status. Zanotuj wersję ownCloud, zainstalowane wersje aplikacji, typ bazy danych i prefiks tabeli z polecenia config/config.php. Zastąp je www-datakontem serwera WWW w swojej dystrybucji.
  2. Zarejestruj powolne działanie. Zanotuj ekran lub aplikację, której dotyczy problem, przybliżony czas i to, czy opóźnienie się powtarza. Przejrzyj logi OwnCloud i diagnostykę powolnych zapytań w swojej bazie danych. Włączaj rejestrowanie zapytań tylko zgodnie z zaleceniami dostawcy bazy danych, ponieważ logi mogą zawierać poufne wartości SQL i szybko rosnąć.
  3. Utwórz kopię zapasową bazy danych i konfiguracji. Użyj metody tworzenia kopii zapasowej spójnej z bazą danych i upewnij się, że kopia zapasowa jest czytelna. Dokumentacja kopii zapasowych ownCloud służy mysqldump --single-transactionjako przykład dla baz danych zgodnych z MySQL; dostosuj wartości hosta, użytkownika i bazy danych do swojej konfiguracji. Nie umieszczaj hasła do bazy danych bezpośrednio w historii powłoki ani na liście procesów.
  4. Planuj zmiany odpowiedzialnie. Aktualizacja schematu lub kompilacja indeksu może wykorzystywać dyskowe wejście/wyjście, procesor i blokady. W przypadku instalacji o dużym obciążeniu lub dużej liczbie instalacji, poinformuj użytkowników o oknie i monitoruj obciążenie bazy danych. Używaj trybu konserwacji ownCloud tylko wtedy, gdy wymaga tego odpowiednia procedura aktualizacji lub konserwacji; nie włączaj go jako substytutu kopii zapasowej.

Najpierw zastosuj aktualizacje schematu zarządzanego przez ownCloud

Jeśli aktualizacja jądra lub aplikacji ownCloud jest w toku, skorzystaj z udokumentowanego procesu aktualizacji dla wybranej metody instalacji. W przypadku konwencjonalnej instalacji systemu Linux polecenie OCC jest uruchamiane jako użytkownik HTTP z katalogu głównego ownCloud. Postępując zgodnie z instrukcjami ręcznej aktualizacji, polecenie wygląda następująco:

sudo -u www-data ./occ upgrade

Nie uruchamiaj go w instalacji, której pliki zostały zaktualizowane tylko częściowo. Najpierw przygotuj pliki odpowiadające wydaniu i postępuj zgodnie z oficjalnymi instrukcjami aktualizacji dla tego wydania. W przypadku wdrożeń Dockera użyj udokumentowanego wywołania OCC kontenera, a nie ścieżki hosta wskazującej na inne środowisko PHP.

Przeczytaj pełne dane wyjściowe polecenia i logi. Pomyślne polecenie powinno zakończyć się bez zgłoszenia nieudanej migracji; nie gwarantuje to, że każde wolne zapytanie zostanie naprawione. Jeśli aktualizacja zgłosi błąd migracji, przerwij i zbadaj ten błąd, zamiast wielokrotnie uruchamiać polecenie lub ręcznie edytować tabele schematu. W przypadku migracji aplikacji zapoznaj się z dokumentacją aktualizacji ownCloud dla danej wersji oraz z opiekunem aplikacji.

Dokumentacja OCC ownCloud 10.15 wymienia polecenia bazy danych, takie jak db:convert-type, db:convert-mysql-charseti db:restore-default-row-format, ale nie zawiera db:add-missing-indices. Ponieważ dostępność poleceń może się różnić w zależności od wersji i zainstalowanego kodu, możesz sprawdzić swoją instancję za pomocą sudo -u www-data ./occ list db. sudo -u www-data ./occ help db:add-missing-indicesJeśli ten drugi zgłosi nieznane polecenie, nie kopiuj polecenia z samouczka NextCloud do ownCloud. Sprawdź dokumentację swojej wersji ownCloud i skorzystaj z obsługiwanej ścieżki aktualizacji lub migracji aplikacji.

Kiedy indeks ręczny jest odpowiedni?

Manualne SQL to opcja administratora bazy danych w przypadku problemu ze zweryfikowanym zapytaniem, a nie rutynowa optymalizacja ownCloud. Najpierw przechwyć dokładne, wolne zapytanie i uruchom narzędzie do inspekcji planu silnika, takie jak EXPLAINdla MySQL/MariaDB lub PostgreSQL. Sprawdź, czy plan skanuje niepotrzebnie dużą liczbę wierszy i czy istniejący indeks jest ignorowany. Prefiks tabeli ownCloud jest konfigurowalny, więc nigdy nie zakładaj, że nazwy tabel zaczynają się od oc_.

Przed utworzeniem indeksu należy porównać proponowane kolumny z filtrami, sprzężeniami i kolejnością sortowania zapytania. Kolejność kolumn w indeksie złożonym ma znaczenie; powielenie istniejącego indeksu może zwiększyć koszty bez poprawy planu. Poproś administratora baz danych o uwzględnienie zachowania wersji bazy danych, obsługi budowania indeksów online lub współbieżnie, wolnego miejsca na dysku, wpływu na blokadę oraz procedury wycofywania. Szczegóły te zależą od silnika i wersji, dlatego nie ma jednego bezpiecznego polecenia SQL dla każdej instalacji ownCloud 10.

Nie modyfikuj tabel ownCloud ani nie usuwaj indeksów tylko dlatego, że nazwa wydaje się zbędna. Takie zmiany mogą kolidować z późniejszą migracją rdzenia lub aplikacji i mogą uszkodzić funkcję, która używa innego zapytania niż to, które zostało sprawdzone. Prowadź pisemny zapis wszelkich ręcznych zmian schematu i upewnij się, że można je odtworzyć po przywróceniu lub migracji. Jeśli brakujący indeks jest defektem schematu produktu, wybierz obsługiwaną poprawkę ownCloud lub wersję aplikacji.

Porównaj alternatywy na poziomie bazy danych

Jeśli plan korzysta już z odpowiedniego indeksu, dodanie kolejnego raczej nie naprawi opóźnienia spowodowanego gdzie indziej. Porównaj te opcje z zaobserwowanym wąskim gardłem:

  • MySQL lub MariaDB: typowe rozwiązanie dla wdrożeń, w których administratorzy już korzystają z tych silników. Przed zmianą ustawień serwera należy sprawdzić pamięć puli buforów, opóźnienia dysków, połączenia i plany dotyczące powolnych zapytań.
  • PostgreSQL: obsługiwana alternatywa dla ownCloud 10, w której łącznik bazy danych PHP i wdrożenie są poprawnie skonfigurowane. Plany zapytań i narzędzia do obsługi indeksów różnią się od MySQL, dlatego należy skorzystać z porad dotyczących PostgreSQL.
  • SQLite: prosty w obsłudze do celów testowych lub do użytku przez jednego użytkownika, ale nie jest domyślnym wyborem w przypadku współbieżnego, wielodostępnego obciążenia produkcyjnego. Strojenie indeksów nie może usunąć ograniczeń współbieżności wdrożenia.

Zmiana silników bazy danych to projekt migracji, a nie szybka modyfikacja indeksu. ownCloud zapewnia occ db:convert-typeobsługiwane konwersje; sprawdź ich wymagania wstępne, najpierw wykonaj kopię zapasową i przetestuj przekonwertowaną instancję, zanim przekażesz ją użytkownikom.

Sprawdź wynik i przerwij, jeśli dowody się nie zgadzają

Powtórz tę samą czynność użytkownika w porównywalnych warunkach i porównaj czas trwania zapytania, plan wykonania, przeanalizowane wiersze, operacje wejścia/wyjścia bazy danych oraz obciążenie serwera. Upewnij się, że odpowiednia strona lub aplikacja ownCloud działa prawidłowo i że logi nie wykazują błędów bazy danych ani migracji. Szybszy wynik dla jednego żądania nie świadczy o ogólnej poprawie; porównaj kilka reprezentatywnych żądań i uwzględnij ciepłe pamięci podręczne.

Jeśli to samo zapytanie nadal działa wolno, mimo że korzysta z odpowiedniego indeksu, należy sprawdzić blokady, pamięć masową, opóźnienia sieciowe, procesy PHP i limity zasobów bazy danych. Jeśli plan zapytania lub struktura tabeli są niejasne, należy przerwać pracę przed ręcznym wykonaniem instrukcji DDL i poprosić administratora baz danych lub osobę kontaktową ds. wsparcia ownCloud o ich sprawdzenie. Wiarygodnym rezultatem jest schemat zgodny z zainstalowaną wersją ownCloud i przemyślane zapytania, bez nieśledzonych zmian indeksu.

Oficjalne źródła

Zostaw komentarz

Bezpiecznie wyczyść ostrzeżenie ownCloud Apache .htaccess

Bezpiecznie wyczyść ostrzeżenie ownCloud Apache .htaccess

Ustaw opcję AllowOverride All tylko dla głównego katalogu internetowego ownCloud, sprawdź aktywny vhost Apache i bezpiecznie przeładuj, aby przywrócić reguły .htaccess.

Skonfiguruj audyt przedsiębiorstwa ownCloud i zweryfikuj dzienniki

Włącz aplikację Enterprise Auditing firmy ownCloud, kieruj zdarzenia admin_audit do chronionego pliku dziennika i upewnij się, że rejestrowane są rzeczywiste działania użytkowników.

Połącz ownCloud Infinite Scale z Keycloak za pomocą OIDC

Połącz ownCloud Infinite Scale z Keycloak za pomocą OIDC

Wydawca domeny, klient sieciowy i użytkownik Keycloak są zgodne z oświadczeniami, dzięki którym ownCloud Infinite Scale może niezawodnie logować użytkowników za pośrednictwem klientów sieciowych i mobilnych.

Przenieś pliki ownCloud do nowego właściciela bez utraty udziałów

Przenieś swoje pliki i udziały wychodzące za pomocą polecenia occ usługi ownCloud, sprawdź, co pozostaje, i zweryfikuj dostęp przed usunięciem starego konta.

Przyspiesz zapytania ownCloud 10, bezpiecznie zarządzając indeksami

Dowiedz się, kiedy indeksy bazy danych ownCloud 10 wymagają uwagi, jak bezpiecznie stosować obsługiwane aktualizacje schematu oraz kiedy lepszym rozwiązaniem jest dostrojenie zapytań lub zmiana bazy danych.

Zamontuj udział SMB/CIFS w ownCloud bez montowania w systemie Linux

Podłącz udostępniony w sieci dysk Windows lub Samba do ownCloud za pośrednictwem pamięci zewnętrznej, zweryfikuj dane uwierzytelniające i bezpiecznie rozwiąż problemy z niedostępnymi folderami.

Bezpieczne czyszczenie wersji plików ownCloud za pomocą polecenia occ

Bezpieczne czyszczenie wersji plików ownCloud za pomocą polecenia occ

Usuń każdą zapisaną wersję pliku ownCloud Server Classic dla jednego konta lub wszystkich użytkowników i odróżnij pełne usunięcie od wygaśnięcia na podstawie okresu przechowywania.

Odmowa połączenia z ownCloud Mobile? Sprawdź adres URL i dostępność

Odmowa połączenia z ownCloud Mobile? Sprawdź adres URL i dostępność

Śledź odmowę połączenia mobilnego ownCloud, sprawdzając we właściwej kolejności adres URL serwera, sieć telefoniczną, punkt końcowy HTTPS i dzienniki serwera.

Niezawodne uruchamianie zadań w tle ownCloud za pomocą timera Systemd

Zastąp zadania wykonywane na żądanie timerem systemd, który co 15 minut uruchamia polecenie occ system:cron obsługiwane przez ownCloud.

Przywróć synchronizację ownCloud WebDAV, znajdując uszkodzoną trasę

Prześledź żądanie WebDAV przez Apache, Nginx lub odwrotny serwer proxy, a następnie sprawdź, czy synchronizacja ownCloud działa za pomocą uwierzytelnionego testu PROPFIND.