Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Uwaga / Notatka
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj polecenia ALTER SERVER CONFIGURATION .
Aby przeprowadzić wielozadaniowość, system Windows czasami przenosi wątki procesów między różnymi procesorami. Mimo że wydajność z punktu widzenia systemu operacyjnego, to działanie może zmniejszyć wydajność programu SQL Server w przypadku dużych obciążeń systemowych, ponieważ każda pamięć podręczna procesora jest wielokrotnie ładowana ponownie przy użyciu danych. Przypisywanie procesorów do określonych wątków może poprawić wydajność w tych warunkach, eliminując ponowne ładowanie procesora; takie skojarzenie między wątkiem a procesorem jest nazywane koligacją procesora.
Program SQL Server obsługuje koligację procesora z dwiema opcjami maski koligacji: affinity mask (znaną również jako maska koligacji procesora) i affinity I/O mask. Aby uzyskać więcej informacji na temat programu affinity I/O mask option, zobacz Konfiguracja serwera: maska we/wy koligacji. Obsługa koligacji procesora CPU i we/wy dla serwerów z procesorami 33–64 wymaga również użycia odpowiednio opcji konfiguracji serwera maskowania koligacji64 i koligacji64 I/Wy.
Uwaga / Notatka
Obsługa koligacji dla serwerów z procesorami 33–64 jest dostępna tylko w 64-bitowych systemach operacyjnych.
Opcja affinity mask , która istniała we wcześniejszych wersjach programu SQL Server, dynamicznie kontroluje koligację procesora CPU.
W programie SQL Server affinity mask można skonfigurować opcję bez konieczności ponownego uruchamiania wystąpienia programu SQL Server. W przypadku użycia sp_configure, należy uruchomić RECONFIGURE opcję konfiguracji lub RECONFIGURE WITH OVERRIDE po jej ustawieniu. W przypadku korzystania z programu SQL Server Express zmiana affinity mask opcji wymaga ponownego uruchomienia.
Zmiany w maskach koligacji są wykonywane dynamicznie, co umożliwia uruchamianie i zamykanie harmonogramów procesora CPU, które wiążą wątki procesów w programie SQL Server. Taka sytuacja może wystąpić w miarę zmiany warunków na serwerze. Jeśli na przykład nowe wystąpienie programu SQL Server zostanie dodane do serwera, może być konieczne wprowadzenie zmian affinity mask w opcji ponownego dystrybuowania obciążenia procesora.
Modyfikacje masek bitów koligacji wymagają programu SQL Server włączenia nowego harmonogramu procesora CPU i wyłączenia istniejącego harmonogramu procesora CPU. Nowe partie można następnie przetworzyć na nowych lub pozostałych harmonogramach.
Aby uruchomić nowy harmonogram procesora CPU, program SQL Server tworzy nowy harmonogram i dodaje go do listy swoich standardowych harmonogramów. Nowy harmonogram jest traktowany tylko dla nowych przychodzących partii. Bieżące partie są nadal uruchamiane w tym samym harmonogramie. Pracownicy migrują do nowego harmonogramu podczas zwalniania lub tworzenia nowych procesów roboczych.
Zamknięcie harmonogramu wymaga, aby wszystkie partie w harmonogramie zakończyły działania i zakończyły działanie. Harmonogram, który jest zamykany, jest oznaczony jako offline, aby żadna nowa partia nie została zaplanowana.
Niezależnie od tego, czy dodasz, czy usuniesz nowy harmonogram, stałe zadania systemowe, takie jak monitor blokady, punkt kontrolny, wątki zadań systemowych (przetwarzanie DTC) i proces sygnału będą nadal działać w harmonogramie, gdy serwer działa. Te stałe zadania systemowe nie są migrowane dynamicznie. Aby ponownie dystrybuować obciążenie procesora dla tych zadań systemowych między harmonogramami, należy ponownie uruchomić wystąpienie programu SQL Server. Jeśli program SQL Server próbuje zamknąć harmonogram skojarzony z trwałym zadaniem systemowym, zadanie będzie nadal uruchamiane w harmonogramie offline (bez migracji). Ten harmonogram jest powiązany z procesorami w zmodyfikowanej masce koligacji i nie nakłada żadnego obciążenia na procesor, z który został powiązany przed zmianą. Dodatkowe harmonogramy offline nie powinny znacząco wpływać na obciążenie systemu. Jeśli tak, ponowne uruchomienie serwera bazy danych jest wymagane do ponownego skonfigurowania tych zadań w harmonogramach dostępnych za pomocą zmodyfikowanej maski koligacji.
Nie ustawiaj affinity mask wartości konfiguracji i affinity I/O mask programu SQL Server, aby używać tych samych procesorów CPU. Wydajność może wystąpić, jeśli zdecydujesz się powiązać procesor zarówno z planowaniem wątków roboczych programu SQL Server, jak i przetwarzaniem we/wy. W związku z tym upewnij się, że wartości konfiguracji nie są ustawione dla tego samego procesora. To samo zalecenie dotyczy poleceń affinity64 mask i affinity64 I/O mask. Aby upewnić się, że affinity mask element nie nakłada się na affinity I/O maskelement , polecenie RECONFIGURE sprawdza, czy normalne koligacje procesora CPU i we/wy wzajemnie się wykluczają. Jeśli nie, komunikat o błędzie zostanie zgłoszony do sesji klienta i do dziennika błędów programu SQL Server, wskazując, że takie ustawienie nie jest zalecane.
Msg 5834, Level 16, State 1, Line 1
The affinity mask specified conflicts with the IO affinity mask specified. Use the override option to force this configuration.
Opcje uruchamiania RECONFIGURE WITH OVERRIDE umożliwiają nakładanie się koligacji procesora CPU i we/wy i nie wykluczają się wzajemnie.
Zadania koligacji we/wy (takie jak leniwy składnik zapisywania i moduł zapisywania dziennika) mają bezpośredni wpływ na element affinity I/O mask. Jeśli leniwe zadania zapisywania i zapisywania dzienników nie są powiązane, są one zgodne z tymi samymi regułami zdefiniowanymi dla innych stałych zadań, takich jak monitor blokady lub punkt kontrolny.
Jeśli określisz maskę koligacji, która próbuje mapować na nieistniejący procesor CPU, RECONFIGURE polecenie zgłasza komunikat o błędzie zarówno do sesji klienta, jak i dziennika błędów programu SQL Server.
RECONFIGURE WITH OVERRIDE Użycie opcji nie ma wpływu w tym przypadku, a ten sam błąd konfiguracji jest zgłaszany ponownie.
Działanie programu SQL Server można również wykluczyć z określonych przypisań obciążeń przez system operacyjny Windows. W przypadku ustawienia bitu reprezentującego procesor na 1wartość , ten procesor jest wybierany przez aparat bazy danych programu SQL Server na potrzeby przypisania wątku. Po ustawieniu affinity mask0 wartości (wartość domyślna) algorytmy planowania systemu Microsoft Windows ustawiają koligację wątku. Po ustawieniu affinity mask wartości innej niżzerowa koligacja programu SQL Server interpretuje wartość jako maskę bitową określającą te procesory kwalifikujące się do wyboru.
Oddzielając wątki programu SQL Server od uruchamiania na określonych procesorach, system Microsoft Windows może lepiej ocenić obsługę procesów specyficznych dla systemu Windows. Na przykład na serwerze 8 procesorów CPU z dwoma wystąpieniami programu SQL Server (wystąpienie A i B) administrator systemu może użyć affinity mask opcji przypisania pierwszego zestawu 4 procesorów CPU do wystąpienia A i drugiego zestawu 4 do wystąpienia B. Aby skonfigurować więcej niż 32 procesory, ustaw zarówno elementy , jak affinity mask i affinity64 mask. Wartości dla elementu affinity mask są następujące:
| Bajty w masce | Liczba procesorów CPU |
|---|---|
| 1 bajt | Maksymalnie 8 procesorów CPU |
| 2 bajty | Maksymalnie 16 procesorów CPU |
| 3 bajty | Maksymalnie 24 procesory CPU |
| 4 bajty | Maksymalnie 32 procesory CPU |
Aby obsłużyć więcej niż 32 procesory CPU, skonfiguruj 4 bajty affinity mask dla pierwszych 32 procesorów CPU i maksymalnie 4 bajty affinity64 mask dla pozostałych procesorów CPU.
Ponieważ ustawienie koligacji procesora programu SQL Server jest wyspecjalizowaną operacją, należy jej używać tylko wtedy, gdy jest to konieczne. W większości przypadków domyślna koligacja systemu Windows zapewnia najlepszą wydajność. Podczas ustawiania masek koligacji należy wziąć pod uwagę wymagania dotyczące procesora CPU dla innych aplikacji. Aby uzyskać więcej informacji, zobacz dokumentację systemu operacyjnego Windows.
Uwaga / Notatka
Monitor procesów umożliwia wyświetlanie i analizowanie użycia poszczególnych procesorów.
Podczas określania affinity I/O mask opcji należy jej użyć z opcją affinity mask konfiguracji. Jednak, jak wspomniano wcześniej, nie włączaj tego samego procesora CPU zarówno w przełączniku affinity mask , jak i opcji affinity I/O mask . Bity odpowiadające poszczególnym procesorom powinny znajdować się w jednym z następujących trzech stanów:
-
0affinity maskzarówno w opcji, jak i waffinity I/O maskopcji . -
1affinity maskw opcji i0waffinity I/O maskopcji . -
0affinity maskw opcji i1waffinity I/O maskopcji .
Ostrzeżenie
Nie należy konfigurować koligacji procesora CPU w systemie operacyjnym Windows, a także konfigurować affinity mask w programie SQL Server. Te ustawienia próbują osiągnąć ten sam wynik, a jeśli konfiguracje są niespójne, mogą wystąpić nieprzewidywalne wyniki. Koligacja procesora CPU programu SQL Server jest najlepiej skonfigurowana przy użyciu sp_configure opcji w programie SQL Server.
Przykłady
Jako przykład ustawienia affinity mask opcji, jeśli procesory 1, 2 i 5 są wybrane jako dostępne dla bitów w pozycjach 1, 2 i 5 ustawione na 1 i bity 0, 3, 4, 6 i 7 ustawione na 0wartość , wartość szesnastkowa 0x26 (odpowiednik 38dziesiętny ) musi być używany. Numeruj pozycje bitów od prawej do lewej.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'affinity mask', 38;
RECONFIGURE;
GO
W poniższej tabeli przedstawiono affinity mask wartości systemu 8 procesorów CPU.
| Wartość dziesiętna | Maska bitów binarnych | Zezwalaj na wątki programu SQL Server na procesorach |
|---|---|---|
1 |
00000001 |
0 |
3 |
00000011 |
0 i 1 |
7 |
00000111 |
0, 1 i 2 |
15 |
00001111 |
0, 1, 2 i 3 |
31 |
00011111 |
0, 1, 2, 3 i 4 |
63 |
00111111 |
0, 1, 2, 3, 4 i 5 |
127 |
01111111 |
0, 1, 2, 3, 4, 5 i 6 |
255 |
11111111 |
0, 1, 2, 3, 4, 5, 6 i 7 |
Opcja affinity mask jest opcją zaawansowaną. Jeśli używasz sp_configure procedury składowanej systemu do zmiany ustawienia, możesz zmienić tylko affinity mask wtedy, gdy show advanced options jest ustawiona wartość 1. Po wykonaniu polecenia Transact-SQL RECONFIGURE nowe ustawienie zostanie zastosowane natychmiast bez konieczności ponownego uruchamiania wystąpienia programu SQL Server.
Nieumundurowy dostęp do pamięci (NUMA)
W przypadku korzystania ze sprzętowego dostępu do pamięci (NUMA) i ustawionego affinity mask jest każdy harmonogram w węźle powiązany z własnym procesorem CPU.
affinity mask Jeśli parametr nie jest ustawiony, każdy harmonogram jest powiązany z grupą procesorów CPU w węźle NUMA, a harmonogram zamapowany na węzeł N1 NUMA może zaplanować pracę na dowolnym procesorze CPU w węźle, ale nie na procesorach CPU skojarzonych z innym węzłem.
Każda operacja uruchomiona w jednym węźle NUMA może używać tylko stron buforu z tego węzła. Gdy operacja jest uruchamiana równolegle na procesorach CPU z wielu węzłów, pamięć może być używana z dowolnego węzła.
Problemy z licencjami
Koligacja dynamiczna jest ściśle ograniczona przez licencjonowanie procesora CPU. Program SQL Server nie zezwala na żadną konfigurację affinity mask opcji naruszających zasady licencjonowania.
Firma startupowa
Jeśli określona maska koligacji narusza zasady licencjonowania podczas uruchamiania programu SQL Server lub dołączania bazy danych, warstwa aparatu kończy proces uruchamiania lub operację dołączania/przywracania bazy danych, a następnie resetuje sp_configure wartość przebiegu maski koligacji do zera, wydając komunikat o błędzie do dziennika błędów programu SQL Server.
Zmienić konfigurację
Jeśli określona maska koligacji narusza zasady licencjonowania podczas uruchamiania polecenia Transact-SQL RECONFIGURE , komunikat o błędzie jest zgłaszany do sesji klienta i do dziennika błędów programu SQL Server, co wymaga od administratora bazy danych ponownego skonfigurowania maski koligacji. W tym przypadku nie jest akceptowane żadne RECONFIGURE WITH OVERRIDE polecenie.