Udostępnij za pomocą


sys.dm_exec_query_resource_semaphores (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Zwraca informacje o aktualnym statusie semaforu zapytania i zasobu w SQL Server. sys.dm_exec_query_resource_semaphores zapewnia ogólny status pamięci zapytań i wykonania oraz pozwala określić, czy system ma dostęp do wystarczającej ilości pamięci. Ten pogląd uzupełnia informacje o pamięci uzyskane z sys.dm_os_memory_clerks , aby uzyskać pełny obraz stanu pamięci serwera. sys.dm_exec_query_resource_semaphores zwraca jeden wiersz dla zwykłego semaforu zasobu i inny dla semaforu zasobu małego zapytania. Istnieją dwa wymagania dla semaforu z małym zapytaniem:

  • Wymagany limit pamięci powinien być mniejszy niż 5 MB

  • Koszt zapytania powinien być mniejszy niż 3 jednostki kosztu

Uwaga / Notatka

Aby wywołać to z usługi Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_exec_query_resource_semaphores. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

Nazwa kolumny Typ danych Description
resource_semaphore_id smallint Nieunikalny identyfikator semaforu zasobu. 0 dla zwykłego semaforu zasobów i 1 dla semaforu małego zapytania.
target_memory_kb bigint Cel wykorzystania w kilobajtach przyznawaj.
max_target_memory_kb bigint Maksymalny potencjalny cel w kilobajtach. NULL dla semaforu zasobów do małych zapytań.
total_memory_kb bigint Pamięć przechowywana przez semafor zasobów w kilobajtach. Jeśli system jest pod presją pamięci lub jeśli wymuszona minimalna pamięć jest często przyznawana, wartość ta może być większa niż wartości target_memory_kb lub max_target_memory_kb . Całkowita pamięć to suma dostępnej i przyznanej pamięci.
available_memory_kb bigint Pamięć dostępna dla nowego grantu w kilobajtach.
granted_memory_kb bigint Całkowita pamięć przyznana w kilobajtach.
used_memory_kb bigint Fizycznie zużywał część przydzielonej pamięci w kilobajtach.
grantee_count int Liczba aktywnych zapytań, które mają spełnione swoje granty.
waiter_count int Liczba zapytań czekających na spełnienie grantów.
timeout_error_count bigint Łączna liczba błędów time-out od momentu uruchomienia serwera. NULL dla semaforu zasobów do małych zapytań.
forced_grant_count bigint Łączna liczba wymuszonych przydziałów na minimalną pamięć od momentu uruchomienia serwera. NULL dla semaforu zasobów do małych zapytań.
pool_id int Identyfikator puli zasobów, do której należy ten semafor zasobów.
pdw_node_id int Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW)

Identyfikator węzła, w ramach którego znajduje się ta dystrybucja.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Uwagi

Zapytania wykorzystujące dynamiczne widoki zarządzania, w tym ORDER BY lub agregaty, mogą zwiększyć zużycie pamięci i tym samym przyczyniać się do problemu, który rozwiązują.

Używaj sys.dm_exec_query_resource_semaphores do rozwiązywania problemów, ale nie włączaj go do aplikacji, które będą korzystać z przyszłych wersji SQL Server.

Funkcja Resource Governor umożliwia administratorowi bazy danych rozdzielanie zasobów serwera między pule zasobów, maksymalnie do 64 pul. W SQL Server 2012 (11.x) i wyższych każda pula zachowuje się jak mała, niezależna instancja serwera i wymaga 2 semaforów.

Zobacz też

Dynamiczne widoki zarządzania i funkcje związane z wykonywaniem (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)