| Termin | Definicja |
|---|---|
| SYS.DM_OS_BUFFER_DESCRIPTORS | sys.dm_os_buffer_descriptors zwraca informacje o stronach danych przechowywanych w buforze pamięci. Położenie widoku w architekturze SQL Server
Wynik należy interpretować jako chwilowy obraz stanu pamięci. Obecność strony w tym widoku nie oznacza, że będzie ona przechowywana tam przez cały czas. SQL Server może usunąć ją z puli buforów, gdy potrzebuje miejsca dla innych danych, gdy zmieni się obciążenie albo gdy wystąpią działania związane z kontrolą pamięci. Z tego powodu pojedyncze zapytanie pokazuje stan z momentu wykonania, a nie trwałą charakterystykę bazy. Wiersze widoku można powiązać z konkretną bazą na podstawie identyfikatora bazy danych, a następnie z plikiem danych za pomocą identyfikatora pliku i numeru strony. Sam numer strony nie jest nazwą tabeli ani indeksem. Aby ustalić, do jakiego obiektu należy dana strona, trzeba wykorzystać dodatkowe informacje o alokacji i strukturze bazy. Taka interpretacja wymaga znajomości metadanych SQL Server oraz świadomości, że część stron służy do celów technicznych i nie reprezentuje bezpośrednio danych użytkownika. Jak odczytywać dane i budować diagnozęNajbardziej użyteczne pola obejmują między innymi Praktyczna analiza zwykle polega na agregowaniu wierszy według Warto odróżnić strony tabel od stron indeksów. Jeżeli w pamięci przeważają strony indeksu, może to oznaczać częste wyszukiwanie po określonych kluczach, ale nie dowodzi jeszcze, że indeks jest właściwie zaprojektowany. Z kolei duża liczba stron danych może wynikać z pełnych skanów, raportów, nieoptymalnych warunków łączenia albo zwyczajnego przetwarzania dużych zbiorów. Widok pomaga wskazać obszar do dalszego sprawdzenia, lecz nie zastępuje analizy zapytań. Trzeba też pamiętać o wpływie kompresji, partycjonowania i rodzaju obiektu. Dwie tabele o podobnej liczbie rekordów mogą zajmować różną liczbę stron, a jeden indeks może być znacznie większy od innego ze względu na szerokość kluczy i dodatkowych kolumn. Przy porównywaniu wyników najlepiej zachować te same warunki pomiaru, wykonywać kilka obserwacji i zapisywać moment oraz rodzaj aktywności występującej w bazie. Co może zmylić podczas obserwacjiCzęstym błędem jest utożsamianie dużej obecności bazy w buforze z awarią pamięci. Buforowanie jest normalnym sposobem przyspieszania pracy, a wolna pamięć może być wykorzystana właśnie po to, aby ograniczyć kolejne odczyty z dysku. Problem pojawia się dopiero wtedy, gdy dane są szybko usuwane i ponownie ładowane, występują długie oczekiwania na wejście-wyjście albo proces systemowy nie ma wystarczających zasobów. Wynik może zmienić się po restarcie usługi SQL Server, przełączeniu bazy, dużym skanowaniu lub zakończeniu zadania konserwacyjnego. Nie należy na tej podstawie wyciągać wniosku, że restart naprawił przyczynę. Wyczyścił on jedynie część stanu pamięci i mógł chwilowo zmienić sposób wykonywania zapytań. Po ponownym rozgrzaniu bufora wcześniejsze objawy mogą wrócić. Do wykonania zapytania i interpretacji widoku potrzebne są odpowiednie uprawnienia, których zakres może różnić się między wydaniami SQL Server. Brak dostępu nie oznacza uszkodzenia bazy. Może wynikać z polityki bezpieczeństwa, konta o zbyt małych uprawnieniach albo ograniczeń środowiska. Nadawanie szerokich uprawnień bez sprawdzenia zasad ochrony danych nie jest dobrym sposobem rozwiązania problemu. Nie należy również traktować liczby stron jako bezpośredniego pomiaru użycia pamięci operacyjnej przez konkretną aplikację. Pula buforów jest zarządzana przez silnik, a SQL Server wykorzystuje pamięć także na inne cele. Rzetelna diagnoza powinna zestawiać dane z tego widoku z konfiguracją pamięci, licznikami wydajności, statystykami zapytań oraz informacjami o stanie nośnika. W starszych lub rzadko używanych instalacjach takie analizy mogą pojawiać się sporadycznie, ponieważ dzisiejsze narzędzia diagnostyczne często prezentują te same informacje w bardziej zintegrowanej formie. Gdzie kończy się analiza programu, a zaczyna sprzętJeżeli obserwacja wskazuje na częste oczekiwanie na odczyt, warto sprawdzić także fizyczny stan dysku, temperatury, pamięć operacyjną, zasilanie i stabilność płyty głównej. Uszkodzony nośnik może powodować błędy odczytu, zawieszanie systemu i przerwane operacje bazodanowe, choć sam widok buforów nie potrafi potwierdzić awarii konkretnego podzespołu. Do rozdzielenia problemu programowego od sprzętowego potrzebne są logi systemowe, testy nośnika i kontrola powtarzalności objawów. Warszawskie Pogotowie Komputerowe wykonuje fizyczną naprawę laptopów oraz komputerów stacjonarnych. Zgłoszenie ma sens wtedy, gdy objawom związanym z pracą SQL Server towarzyszą restarty komputera, zaniki dysku, błędy pamięci, przegrzewanie, problemy z uruchamianiem albo ryzyko utraty danych. Przed przekazaniem urządzenia warto zabezpieczyć kopię ważnych baz i nie kontynuować pracy na nośniku, który wydaje nietypowe dźwięki lub zgłasza błędy odczytu. Analiza |