Odpowiedni system Windows O / S rozmiar pliku stronicowania dla SQL Server

głosy
16

Czy ktoś zna dobra zasada dla odpowiedniego rozmiaru pliku stronicowania dla uruchomionego serwera SQL Server w systemie Windows 2003?

Utwórz 05/08/2008 o 18:07
źródło użytkownik
W innych językach...                            


8 odpowiedzi

głosy
1

Jeśli szukasz wysokiej wydajności, będziesz chciał uniknąć stronicowania całkowicie, więc rozmiar pliku strona staje się mniej istotne. Zainwestuj w tyle pamięci RAM, jak to możliwe dla serwera DB.

Odpowiedział 11/08/2008 o 13:22
źródło użytkownik

głosy
2

Im większe, tym lepiej się do rozmiaru zestawu roboczego aplikacji, w której zaczniesz się dostać do malejących przychodów. Można spróbować znaleźć to przez powolne zwiększanie lub zmniejszanie rozmiaru, aż pojawi się znaczące zmiany w stawkach cache hit. Jednakże, jeśli cache hit stopa wynosi ponad 90% i tak prawdopodobnie jesteś OK. Generalnie należy pilnować tego na systemie produkcyjnym, aby upewnić się, że nie przerósł jego alokację pamięci RAM.

Odpowiedział 23/12/2008 o 15:45
źródło użytkownik

głosy
2

Niedawno zostały posiadające niektóre problemy z wydajnością z jednym z naszych SQL Server, że nie byliśmy w stanie całkowicie wąski dół i rzeczywiście stosowanego jednego z naszych biletów pomocy technicznej firmy Microsoft do ich rozwiązywania. Optymalna wielkość pliku stronicowania, aby korzystać z SQL Server podszedł i zalecenia Microsoftu jest to, że być 1 1/2 razy ilość pamięci RAM .

Odpowiedział 10/09/2009 o 06:05
źródło użytkownik

głosy
10

Bez znaczenia na wielkość pamięci RAM, trzeba jeszcze pliku stronicowania co najmniej 1,5 razy większą ilość fizycznej pamięci RAM. To prawda, nawet jeśli masz maszynę RAM 1 TB, musisz 1.5 TB pliku stronicowania na dysku (brzmi dziwnie, ale jest prawdą).

Gdy proces pyta MEM_COMMIT pamięć poprzez VirtualAlloc / VirtualAllocEx, żądany rozmiar musi być zarezerwowane w pliku stronicowania. To było w pierwszym systemie Win NT, i nadal jest prawdą dzisiaj zobaczyć Zarządzanie Pamięć wirtualna w Win32 :

Kiedy pamięć jest zaangażowana, fizycznych stron pamięci są przydzielane i przestrzeń jest zarezerwowana w pliku stronicowania .

Gołe jakieś dziwne ekstremalne przypadki, SQL Server będzie zawsze poprosić o stronach MEM_COMMIT. A biorąc pod uwagę fakt, że SQL wykorzystuje dynamiczne zarządzanie pamięcią polityki, która zastrzega góry tyle puli buforów jak to możliwe (rezerw i zobowiązuje się względem VAS), SQL Server zwróci na uruchomienie ogromny rezerwację miejsca w pliku stronicowania. Jeśli plik stronicowania nie jest odpowiednio wielkości błędy 801/802 zaczną pojawiać się w pliku ErrorLog i operacji SQL.

To zawsze powoduje pewne zamieszanie, ponieważ administratorzy błędnie zakładają, że duża ilość pamięci RAM eliminuje potrzebę pliku stronicowania. W rzeczywistości dzieje się przeciwnie, duża pamięć RAM zwiększa potrzebę pliku stronicowania, tylko ze względu na wewnętrzne funkcjonowanie menedżera pamięci systemu Windows NT. Zastrzeżony plik stronicowania jest, mam nadzieję, nigdy nie używany.

Odpowiedział 22/11/2009 o 23:11
źródło użytkownik

głosy
3

Według Microsoftu, „jak ilość pamięci RAM w komputerowych wzrasta, potrzeba pliku stronicowania maleje.” W artykule następnie przechodzi do opisu sposobu korzystania Dzienniki wydajności w celu ustalenia, jaka część pliku stronicowania jest rzeczywiście używany. Spróbuj ustawić swój plik stronicowania do pamięci systemowej 1,5 X na początek, a następnie wykonaj zalecane monitorowanie i dokonanie zmian stamtąd.

Jak określić odpowiedni rozmiar pliku strony dla 64-bitowych wersjach systemu Windows

Odpowiedział 03/08/2010 o 19:58
źródło użytkownik

głosy
1

Po wielu badaniach nasze serwery dedykowane SQL Enterprise x64 uruchomione na Windows 2003 Enterprise x64 nie ma pliku stronicowania.

Wystarczy, plik strona jest cache plików, który pobiera zarządzanych przez system operacyjny i SQL ma swój własny system zarządzania pamięcią wewnętrzną.

W artykule MS odwołanie nie kwalifikuje się, że rada jest dla systemu operacyjnego działa out-of-the-box usługi, takie jak udostępnianie plików.

Mając plik stronicowania po prostu obciąża dysk I / O, ponieważ system Windows próbuje pomóc, kiedy tylko SQL OS może wykonać pracę.

Odpowiedział 24/05/2011 o 13:47
źródło użytkownik

głosy
11

Z całym szacunkiem dla Remusa (którego szanuję znacznie), nie zgadzam się. Jeśli plik stronicowania jest wystarczająco duży, aby wspierać pełny zrzut będzie wykonanie pełnego zrzucić za każdym razem. Jeśli masz bardzo dużą ilość pamięci RAM, może to spowodować małe blip aby stał się głównym przerwa.

Nie chcesz serwer musiał wypisać 1 TB pamięci RAM na dysku, jeśli jest jednorazowa przejściowy problem. Jeśli nie jest powracającym problemem, można zwiększyć plik stronicowania, aby uchwycić pełny zrzut. Chciałbym doczekać, aby to zrobić, dopóki nie zostały isntructed przez PSS (lub kogoś innego wykwalifikowanego przeanalizować pełny zrzut) Wniosek do przechwycenia pełnego zrzutu. Niezwykle mały procent administratorów wiedzieć jak analizować pełny zrzut. Mini-dump jest sporą ilością dla rozwiązywania większości problemów, które pojawiają się w każdym razie.

Plus, jeśli serwer jest skonfigurowany tak, aby umożliwić pełny zrzut 1 TB i powracający problem występuje, ile wolnego miejsca na dysku można polecić mając pod ręką? Można wypełnić całą SAN w ciągu jednego weekendu.

Strona złożyć 1.5 * RAM było normą w czasach, kiedy mieliśmy szczęście mieć SQL Server z 3 lub 4 GB pamięci RAM. To nie jest przypadek więcej. I pozostawić plik stronicowania w domyślnym rozmiarze i ustawień systemu Windows na wszystkich serwerach produkcyjnych (z wyjątkiem serwera SSAS, które doświadcza presji pamięci).

I tak dla wyjaśnienia, mam pracował z serwerów od 2 GB pamięci RAM do 2 TB pamięci RAM. Po ponad 11 lat, mam tylko musiał increae plik stronicowania do przechwycenia pełnego zrzucić jeden raz.

Odpowiedział 05/10/2011 o 22:39
źródło użytkownik

głosy
0

W tym przypadku, normalny zalecenie 1,5 razy RAM fizyczne nie jest najlepsza. To bardzo ogólne zalecenie jest przy założeniu, że cała pamięć jest używana przez „normalnych” procesów, które ogólnie mogą mieć ich przynajmniej używanych stron przeniesione na dysk bez generowania ogromnych problemów z wydajnością do procesu aplikacyjnego pamięć należy.

Na serwerach z systemem SQL Server (na ogół z bardzo dużą ilością pamięci RAM), większość fizycznej pamięci RAM jest zaangażowana w proces SQL Server i powinny być (jeśli poprawnie skonfigurowany) zablokowane w pamięci fizycznej, zapobiegając wystronicował do pliku stronicowania , SQL Server zarządza własną pamięć bardzo starannie z myślą o wydajności, wykorzystując dużą część pamięci RAM przeznaczonej do procesu jako pamięci podręcznej danych w celu zmniejszenia dysku I / O. To nie ma sensu, aby strona z tych danych stron cache pliku stronicowania, a jedynym celem posiadania tych danych w pamięci RAM, w pierwszej kolejności jest zmniejszenie dysk I / O. (Należy pamiętać, że system operacyjny Windows wykorzystuje również ilość dostępnej pamięci RAM, podobnie jak pamięć podręczna dysku, aby przyspieszyć działanie systemu.) Ponieważ SQL Server już zarządza własną pamięć, przestrzeń ta pamięć nie powinna być uważana za „stronicowalnej”, a nie uwzględnione w obliczeniach dla pliku stronicowania rozmiar.

W odniesieniu do wspomnianego MEM_COMMIT Remus terminologia jest kłopotliwe, ponieważ w pamięci wirtualnej terminologii „reserved” nie odnosi się do fizycznego przydziału, ale uniemożliwiając wykorzystanie przestrzeni adresowej (nie przestrzeni fizycznej) w innym procesie. Pamięć dostępna jest „zaangażowana” jest w zasadzie równa sumie fizycznej pamięci RAM i wielkości pliku stronicowania, a robi MEM_COMMIT tylko zmniejsza ilość dostępnego w zaangażowanej basenie. Robi nie przeznaczyć stronę dopasowanie w pliku stronicowania w tym czasie. Gdy zaangażowana strona pamięci jest rzeczywiście zapisywane, to znaczy wtedy, gdy system pamięci wirtualnej przeznaczy strony pamięci fizycznej i ewentualnie podbić kolejną stronę z pamięci fizycznej RAM do pliku stronicowania. Zobacz MSDN w funkcji VirtualAlloc odniesienia.

System operacyjny Windows śledzi presji pamięci między procesami aplikacji i jej własny mechanizm pamięci podręcznej dysku i decyduje, kiedy należy wpadać niezablokowanymi strony pamięci z fizycznego do pliku stronicowania. Moje zrozumienie jest, że o pliku stronicowania, który jest zbyt duży w stosunku do rzeczywistego niezablokowanymi przestrzeni pamięci może spowodować w systemie Windows overzealously przywoływania z pamięci aplikacji do pliku stronicowania, co skutkuje w tych zastosowaniach cierpiących konsekwencje stronie pomyłek (niska wydajność).

Tak długo, jak serwer nie jest uruchomiony inne procesy pamięci głodny, rozmiar pliku stronicowania z 4GB powinno być mnóstwo. Jeśli ustawiono SQL Server w celu umożliwienia blokowania stron w pamięci, należy również rozważyć ustawienie ustawienie pamięci max SQL Server tak, że pozostawia trochę fizycznej pamięci RAM dostępnej dla systemu operacyjnego dla siebie i innych procesów.

802 błędów w SQL Server wskazują, że system nie może popełnić żadnych więcej stron w pamięci podręcznej danych. Zwiększenie rozmiaru pliku stronicowania tylko pomoże w tej sytuacji, jako Windows jest w stanie strony w pamięci z procesów innych niż SQL Server. SQL Server pamięć pozwalając rosnąć do pliku stronicowania w tej sytuacji może pozbyć się komunikatów o błędach, ale to jest szkodliwe, ze względu na punkcie wcześniejszym o powód pamięci podręcznej danych w pierwszej kolejności.

Odpowiedział 04/04/2014 o 00:51
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more