| Termin | Definicja |
|---|---|
| Disk IO | Disk IO to wskaźnik intensywności operacji odczytu i zapisu wykonywanych na nośniku dyskowym przez serwer bazodanowy. Co oznacza wskaźnik Disk IODisk IO, zapisywane także jako disk I/O, oznacza wejście i wyjście danych związane z nośnikiem dyskowym. W kontekście serwera bazodanowego opisuje intensywność operacji odczytu danych z dysku oraz zapisu danych na dysk. Odczyt może dotyczyć między innymi stron tabel, indeksów i plików tymczasowych, natomiast zapis obejmuje na przykład utrwalanie zmodyfikowanych stron, rekordów dziennika transakcji oraz wyników operacji wykonywanych przez silnik bazy danych. Sam termin Disk IO nie jest nazwą jednego parametru obowiązującego we wszystkich systemach. W zależności od narzędzia może oznaczać liczbę operacji wejścia i wyjścia na sekundę, ilość przesłanych danych, czas oczekiwania na zakończenie operacji albo udział czasu procesora poświęcony na obsługę dostępu do nośnika. Dlatego interpretacja wskaźnika wymaga sprawdzenia jego jednostki, zakresu pomiarowego oraz tego, czy narzędzie pokazuje odczyt, zapis, czy wartość łączną. IOPS, przepustowość i opóźnienie dostępu do danychTrzy podstawowe cechy obciążenia dyskowego to liczba operacji, przepustowość oraz opóźnienie. IOPS określa liczbę operacji wejścia i wyjścia wykonanych w jednostce czasu. Przepustowość opisuje ilość danych przesłanych w jednostce czasu, zwykle w megabajtach lub gigabajtach na sekundę. Opóźnienie, określane również jako latency, informuje, jak długo trzeba czekać na obsłużenie pojedynczej operacji albo jej określonego percentyla, na przykład wartości p95 lub p99. Duża liczba IOPS nie musi oznaczać dużej przepustowości. Tysiące małych odczytów po kilka kilobajtów mogą generować wysokie IOPS, ale przesyłać mniej danych niż niewielka liczba dużych operacji sekwencyjnych. Odwrotna sytuacja również jest możliwa: nieliczne operacje o dużym rozmiarze mogą zapewniać wysoką przepustowość przy niższej wartości IOPS. W bazie danych znaczenie ma także charakter dostępu. Odczyt sekwencyjny zwykle przebiega inaczej niż losowy, a zapis wymuszany przez dziennik transakcji może mieć inne wymagania niż zapis dużych plików danych. Jak wysoki Disk IO wpływa na działanie bazyWysokie obciążenie Disk IO może powodować wydłużenie czasu wykonywania zapytań, opóźnienia przy zatwierdzaniu transakcji oraz narastanie kolejki operacji oczekujących na nośnik. Jeżeli potrzebne strony danych nie znajdują się w pamięci podręcznej, silnik musi pobrać je z dysku. Gdy nośnik jest zajęty, zapytanie nie może kontynuować pracy do chwili uzyskania wymaganych danych. Podobne opóźnienie może wystąpić przy zapisie zmian, gdy transakcja wymaga utrwalenia informacji przed potwierdzeniem zakończenia operacji. Wzrost Disk IO nie zawsze oznacza błąd sprzętowy. Przyczyną może być zapytanie odczytujące dużą część tabeli, brak odpowiedniego indeksu, nieefektywny plan wykonania, masowe importowanie danych, przebudowa indeksów albo intensywne korzystanie z plików tymczasowych. Znaczenie ma również dostępna pamięć operacyjna. Mniejszy bufor danych oznacza częstsze pobieranie tych samych stron z nośnika, natomiast duży bufor nie usuwa potrzeby zapisu dziennika transakcji ani utrwalania zmian wymaganych przez mechanizmy spójności. Pomiar Disk IO i rozróżnienie przyczyny problemuAnaliza Disk IO powinna obejmować jednocześnie metryki systemu operacyjnego, urządzenia blokowego i serwera bazodanowego. Warto porównać liczbę odczytów i zapisów, rozmiar transferów, średnie oraz percentylowe opóźnienie, długość kolejki i zajętość urządzenia. Pojedynczy odczyt wysokiej wartości Disk IO nie wystarcza do postawienia diagnozy, ponieważ krótkotrwały szczyt może być prawidłowym skutkiem zaplanowanej operacji. Większe znaczenie ma powtarzalność zjawiska oraz zgodność czasowa z pogorszeniem działania zapytań. W praktyce należy ustalić, który rodzaj pliku lub obciążenia generuje ruch: pliki danych, dziennik transakcji, obszar tymczasowy czy proces kopii zapasowej. Następnie można zestawić pomiar z czasem wykonywania zapytań i aktywnością użytkowników lub zadań automatycznych. Jeżeli wysokiemu Disk IO towarzyszy duże opóźnienie i długa kolejka, podejrzenie ograniczenia nośnika jest silniejsze. Jeżeli transfer jest niewielki, ale liczba małych operacji bardzo wysoka, problem może wynikać z charakteru dostępu. Jeżeli natomiast obciążenie pojawia się tylko podczas konkretnego zapytania, potrzebna jest analiza planu wykonania, indeksów i zakresu przetwarzanych danych. |