| Termin | Definicja |
|---|---|
| Timeouty zapytań | Timeouty zapytań mogą wskazywać na brak odpowiedniego indeksu lub blokadę utrzymywaną przez inną transakcję. Co oznacza timeout zapytania do bazy danychTimeout zapytania oznacza, że aplikacja nie otrzymała odpowiedzi z bazy danych w czasie określonym dla danego połączenia albo operacji. Nie jest to samo w sobie informacją o jednej konkretnej usterce. Limit może dotyczyć nawiązania połączenia, oczekiwania na rozpoczęcie wykonywania zapytania, pobierania wyników lub całej operacji po stronie aplikacji. Po przekroczeniu limitu program zwykle przerywa oczekiwanie i zwraca błąd, mimo że baza danych może nadal wykonywać rozpoczęte zapytanie. W praktyce timeout jest sygnałem, że czas obsługi żądania stał się dłuższy niż zakładała aplikacja. Przyczyną może być nieoptymalne zapytanie, duża liczba odczytywanych rekordów, brak właściwego indeksu, blokada przez inną transakcję, przeciążenie komputera albo problem z komunikacją sieciową. Sama zmiana limitu oczekiwania nie usuwa przyczyny. Może jedynie sprawić, że aplikacja będzie czekać dłużej, zanim zgłosi problem. Indeksy, sortowanie i zakres odczytywanych danychBrak indeksu na kolumnie używanej w warunku wyszukiwania może spowodować konieczność sprawdzenia wielu rekordów, zanim baza znajdzie wynik. Podobny problem występuje przy filtrowaniu, sortowaniu lub łączeniu tabel po kolumnach, dla których struktura indeksów nie odpowiada sposobowi wykonywania zapytania. W takiej sytuacji czas pracy rośnie wraz z rozmiarem tabeli, a operacja, która wcześniej kończyła się szybko, po rozbudowie danych może zacząć przekraczać limit aplikacji. Analiza wymaga sprawdzenia treści zapytania, warunków filtrowania, używanych połączeń między tabelami oraz planu wykonania dostępnego w konkretnym silniku bazy danych. Należy także ustalić, czy aplikacja pobiera tylko potrzebne kolumny i rekordy, czy też żąda całego dużego zbioru. Ograniczenie zakresu wyników, poprawa warunków wyszukiwania i dopasowanie indeksu do rzeczywistego zapytania mogą skrócić operację, ale każdą zmianę trzeba zweryfikować na danych o podobnej wielkości jak w środowisku użytkownika. Blokady transakcji i oczekiwanie na zasobyZapytanie może być poprawnie zbudowane, a mimo to nie zakończyć się na czas, jeśli oczekuje na zwolnienie zasobu zajętego przez inną transakcję. Transakcja, która modyfikuje dane i długo pozostaje otwarta, może blokować odczyt lub zapis wykonywany przez kolejne operacje. Źródłem wydłużenia może być również oczekiwanie na dysk, pamięć, procesor albo inne zasoby potrzebne do wykonania planu. Diagnostyka powinna ustalić, czy timeout występuje stale, czy tylko podczas określonej aktywności, na przykład importu danych, synchronizacji lub jednoczesnego zapisu z wielu stanowisk. Warto porównać czas samego zapytania z czasem oczekiwania na blokadę oraz sprawdzić, które operacje były aktywne w tym samym momencie. Nie należy przerywać losowych procesów bez potwierdzenia ich roli, ponieważ zakończenie transakcji może spowodować wycofanie zmian albo przerwanie pracy innego użytkownika. Postępowanie przy powtarzających się timeoutachNajpierw trzeba zapisać dokładny komunikat błędu, moment wystąpienia problemu, nazwę programu oraz czynność wykonywaną przez użytkownika. Pomocne jest porównanie tego samego działania na jednym komputerze i na innych stanowiskach, a także sprawdzenie, czy problem dotyczy wszystkich zapytań, czy tylko konkretnego ekranu lub raportu. Jeżeli błąd pojawia się po zmianie konfiguracji, aktualizacji programu albo zwiększeniu liczby danych, te okoliczności mogą wskazywać kierunek dalszej analizy. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w ramach diagnostyki stanowiska może sprawdzić działanie aplikacji, połączenie sieciowe, obciążenie komputera oraz objawy towarzyszące timeoutom. W przypadku problemu zależnego od samej bazy danych potrzebne są także informacje z systemu, w którym baza pracuje, oraz dostęp do konfiguracji i logów odpowiedzialnych za wykonywanie zapytań. Dopiero po rozdzieleniu problemu aplikacji, komputera, sieci i bazy można dobrać właściwe działanie naprawcze. |