Planowanie instancji serwera SQL lub zadania
Każde wystąpienie SQL Server jest to proces oddzielnego systemu operacyjnego. Każde wystąpienie potencjalnie muszą obsługiwać tysiące żądań od użytkowników.Wystąpienia SQL Server za pomocą wątków systemu Microsoft Windows lub jeśli został skonfigurowany, używają fibers, efektywnie zarządzać te zadania jednocześnie. Każde wystąpienie SQL Server zawsze działa wiele wątków dla procesów systemowych. Obejmuje to jeden lub więcej wątków dla każdego serwera Net-Library, wątek sieci do obsługi sieci We/Wy i wątku sygnał do komunikowania się z formantu usługa menedżera.
Opis planowania
Każde wystąpienie SQL Server ma wewnętrznego warstwy, która implementuje środowisku podobnym do systemu operacyjnego. Ta warstwa wewnętrzny jest używany do planowania i synchronizowanie równoczesnych zadań bez konieczności wywołanie jądra systemu Windows.Ta warstwa wewnętrznych można również zaplanować fibers lub wątki systemu Windows skutecznie.Każde wystąpienie SQL Server przechowuje puli wątków systemu Windows lub fibers do przetwarzania kwerend użytkownika. Maksymalny rozmiar puli ten jest kontrolowany przez Maksymalna liczba wątków opcji konfiguracja serwera.
Aby zrozumieć sposób przetwarzania żądania lub zadanie, warto poznać następujące podstawowe pojęcia:
połączenia
Połączenie jest ustanowione, jeśli użytkownik jest zalogowany pomyślnie.Użytkownik może następnie przesłać jeden lub więcej Transact-SQL instrukcje do wykonania. Połączenie jest zamknięty, gdy użytkownik jawnie loguje lub połączenie zostanie przerwane.partia
partia programu SQL jest zestaw jednej lub więcej Transact-SQL instrukcje przesyłane z klient do wystąpienie SQL Server do wykonania. Reprezentuje on jednostka pracy do Database Engine przez użytkowników.zadania
Jednostka pracy, który jest planowane przez reprezentuje zadanie SQL Server. Zadanie partia można mapować jeden lub więcej zadań.Na przykład równoległych kwerendy zostanie wykonana przez więcej niż jedno zadanie.Wątek systemu Windows
Każdy wątek Windows reprezentuje mechanizm wykonanie niezależnych.Fiber
A fiber to lekkie wątek, który wymaga mniej zasobów niż wątek systemu Windows i można przełączyć kontekst w trybie użytkownika.Jeden wątek systemu Windows mogą być mapowane do wielu fibers.Wątek roboczy
Wątek roboczy przedstawia logiczny wątek w SQL Server do wątku systemu Windows jest wewnętrznie mapowane (1: 1) lub, jeśli lekkie buforowanie jest włączone, aby światłowodowych. Mapowanie jest przechowywana, dopóki wątek roboczy jest dealokowane albo z powodu ciśnienia pamięci lub był bezczynny przez dłuższy czas.Skojarzenie zadania do wątek roboczego jest utrzymywany przez cały czas trwania zadania.
Zarządzanie połączenia użytkownika i roboczego wątek zasoby
W czasie, gdy wątki i fibers to lekkie w ich wykorzystanie zasobów, nadal zajmują zasoby.W systemach z setek lub tysięcy użytkowników połączenia po jednym wątek roboczego dla sesji może wykorzystać wystarczającej ilości zasobów, aby zmniejszyć wydajność SQL Server. Ponadto przydzielania dedykowany pracownika dla każdego połączenia użytkownika nie jest wymagane, ponieważ większość połączeń faktycznie poświęcać dużo czas oczekiwania na instancji mają być odbierane z klient.Zamiast tego wystąpienie SQL Server używa puli wątków roboczych. Tylko w puli wątków roboczych powinien być wystarczająco duży, aby obsłużyć liczbę połączeń użytkownika, które są wykonywane partii w tym samym czasie w takim przypadku.Pozostawiając Maksymalna liczba wątków opcji na wartość domyślną 0 umożliwia wystąpienie SQL Server skutecznie mapować połączeń użytkowników przez wiele wątków roboczych. Pozwala to uzyskać pewność, że ich nie zajmują za dużo zasobów.
Konfigurowanie programu SQL Server dla Fibers
Opcja konfiguracja serwera Lekki buforowania kontroluje, czy wystąpienie SQL Server korzysta z systemu Windows wątków lub fibers. Wartością domyślną dla tej opcji jest 0.To oznacza, że wystąpienie SQL Server planuje Windows wątek dla wątek roboczego, do wartości w Maksymalna liczba wątek opcji.Jeśli Lekki buforowania is zestaw to 1, SQL Server wykorzystywane fibers wątki systemu Windows. To jest określane jako uruchomiony tryb fiber.tryb fiber wystąpienie SQL Server przydziela jeden wątek systemu Windows na harmonogram programu SQL, a następnie przydziela jeden fiber na wątku roboczego, do wartości w Maksymalna liczba wątków opcji.An instance of SQL Server uses the same algorithms to schedule and synchronize tasks when it is using either Windows threads or fibers.SQL Server Express does not support fibers.Aby uzyskać więcej informacji zobaczZa pomocą lekkie, opcja buforowania.Nie zaleca się użycie tryb fiber planowania rutynowych operacji.Jest to, ponieważ jego może obniżyć wydajność, blokując regularnych zalet przełączania kontekstu, a niektóre składniki SQL Server Nie można poprawnie działać tryb fiber. Aby uzyskać więcej informacji zobacz Lekki buforowania.
Opis działania partia lub zadania, planowanie
Gdy aplikacja połączy się z Database Engine, zostanie on przypisany sesja ID (SPID). Wszystkie informacje, które muszą zostać przez cały czas istnienia połączenia jest zarządzana w wewnętrznych struktur danych skojarzonych z identyfikatora SPID.Jako wystąpienie SQL Server partie odbiera od klientów, dzieli partia na jedno lub więcej zadań, a następnie kojarzy każdego zadania z wątek roboczy dostępny z puli wątków roboczych. Wątek roboczy jest związany z zadania dla okresu istnienia tego zadania.Wątek roboczy jest uruchamiany żądania na skojarzony harmonogramu programu SQL.Jeśli nie ma żadnych wolnych wątek, Maksymalna liczba wątek wartość nie została jeszcze osiągnięta, wystąpienie SQL Server przydziela nowego wątek roboczego dla nowego partia. Jeśli nie ma dostępnych nie wolnych wątek lub fibers oraz Maksymalna liczba wątek wartość została już osiągnięta, wystąpienie SQL Server blokuje nowe zadanie, dopóki nie jest zwalniane wątek roboczego.
Pracownik został już skojarzony z zadaniem, pozostaje on skojarzony z zadaniem, dopóki nie zostanie wypełnione, na przykład, aż do ostatniego zbiory generowane przez partia zostało zwrócone do klient.Na które czas, wątek roboczy jest zwalniane i mogą łączyć się z zadania związane z następnej partia.
The Database Engine must actively perform work for a connection only from the czas a partia is received until the wyniki have been returned to the klient. W tym okresie może być czas, kiedy partia nie jest wymagane przetwarzanie aktywne.Na przykład może istnieć czasu kiedy Database Engine oczekiwania dla operacji odczytu do pobierania danych wymaganą dla bieżącej kwerendy, lub oczekiwania na następne partia zwolnienie blokady. Zadania pracownika skojarzenia jest zachowywane nawet wtedy, gdy zadanie jest zablokowane na niektórych zasób.
Za każdym razem, gdy Database Engine uruchamia przetwarzanie zadania związane z partia, planuje to wątek roboczy, skojarzone z zadaniem do wykonania pracy. Po pracownik wątek ukończył pracy dla zadania, wystąpienie SQL Server wywołuje wątek roboczego do następnego zadania, które jest gotowy do pracy. Identyfikatora SPID pozostaje stały dla połączenia przez cały czas istnienia połączenia.Długim połączeń może być ich indywidualnych partia zadania wykonywane przez wiele różnych wątków.Na przykład zadań z pierwszej instancji mogą być wykonywane przez worker1, ale może być wykonane zadania z drugiej instancji przez worker2.Instrukcje niektóre mogą być przetwarzane równolegle.W takim przypadek zadanie partia może mieć wiele zadań, które są wykonywane przez wiele wątków jednocześnie.
See Also