- Co to jest hot spotting?
Aaron ma rację i nie zamierzam przerabiać tego, co powiedział powyżej, jednak nie chodzi tylko o IO dysku. Główna część, z którą większość ludzi ma problemy w TempDB, wynika z konfliktu o pewne struktury śledzenia.
Ponieważ posiadanie wielu plików tempdb pozwala algorytmom proporcjonalnego zapełniania i okrągłego robota efektywnie zachowywać się „sprawiedliwie” w przypadku alokacji, dodanie nowego pliku bez alokacji trochę to uśmierza. Nie zgadzam się, że jest to ostrzeżenie „małe kurczaki” (patrz aktualizacje produktów poniżej), jeśli zaczniesz widzieć PAGELATCH_*
oczekiwania na wymienionym nowym pliku, a nie na wielu innych plikach. To na ogół dzieje się w systemach, które posiadają wysoką aktywność tempdb i mają już więcej niż jeden plik.
Należy pamiętać, że w SQL Server 2019 dostępne są opcje zmiany niektórych podstawowych tabel systemowych na tabele w pamięci, które mogą ulec poprawie, ponieważ obiekty w pamięci są przydzielane inaczej niż tabele zapisane na dysku. Tabele dyskowe to tradycyjne tabele, nad którymi wszyscy pracujemy od lat. SQL Server 2014 wprowadził tabele zoptymalizowane pod kątem pamięci . SQL Server 2019 może obsługiwać niektóre metadane alokacji w tabelach zoptymalizowanych pod kątem pamięci.
Kolejna zmiana została wprowadzona w SQL Server 2019, aby pomóc w równoczesnych zmianach PFS, co zasadniczo PAGELATCH_*
czeka rywalizacja o strukturę w pamięci w alokacji .
- Co z hot spottingiem, co znacznie pogorszyło się w tempdb?
Nic IMHO. Tak, TempDB ma więcej elementów, które mogą powodować zapisy bez bezpośredniego użycia, co może utrudniać niektóre elementy. Jednak bardzo zajęta baza danych użytkowników pod względem tempa zmian danych jest równie zła. Nie ogranicza się to tylko do TempDB.
- Jakie konkretne rzeczy w DB byłyby znacznie gorsze?
Naprawdę podoba mi się analogia Aarona! To esencja tego, co się dzieje. Co gorsza, to przydzielanie i śledzenie miejsca dla obiektów w bazie danych. Jeśli twoja baza danych użytkowników jest w większości statyczna (mała szybkość zmian) lub twoja TempDB tak naprawdę nie jest używana, nic nie zauważysz. Jeśli jednak jest to dość zajęty serwer, możesz uruchomić lub zaostrzyć oczekiwania związane z pagelowaniem, co może prowadzić do blokowania konwojów.
Aaron wskazał już, że w starszej wersji istnieją flagi śledzenia, aby upewnić się, że używane są jednolite zakresy i że wszystkie pliki w grupie plików rosną razem (Aaron wskazuje 1117 i 1118, które są NOP w 2016+). Kolejną rzeczą, na którą chciałbym zwrócić uwagę, jest to, że nie dotyczy to tylko TempDB, ale każdej bazy danych, a fizyczny układ powinien być przemyślany w zależności od potrzeb.
Dotyczy to nie tylko problemów związanych z hotspottingiem, ale ma zastosowanie do innych części systemu, takich jak tworzenie kopii zapasowych / przywracanie, zarządzanie plikami, fragmentacja metadanych systemu plików itp., Na które wszystko można pomóc, mając wiele plików.
Możesz zobaczyć rywalizację o strukturę alokacji, szukając strony waitresource
na stronie PFS (która jest stroną 1, a następnie co 8088 stron). Jeśli widzisz, że wszystko znajduje się w tym samym pliku (2: plik: strona), oznacza to, że tak się dzieje.