sys.dm_os_nodes (Transact-SQL)

适用于SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

一个名为 SQLOS 的内部组件可创建模拟硬件处理器位置的节点结构。 可以使用 软 NUMA 创建自定义节点布局来更改这些结构。

注意

从 SQL Server 2016(13.x)开始,SQL Server 数据库引擎将自动对某些硬件配置使用软 NUMA。 有关详细信息,请参阅 自动软 NUMA

下表提供了有关这些节点的信息。

注意

若要从 Azure Synapse Analytics 或 Analytics 平台系统(PDW)调用此 DMV,请使用名称 sys.dm_pdw_nodes_os_nodes。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

列名称 数据类型 描述
node_id smallint 节点的 ID。
node_state_desc nvarchar(256) 对节点状态的说明。 首先显示互斥的值,后跟可组合的值。 例如:
Online, Thread Resources Low, Lazy Preemptive

有四个互斥node_state_desc值。 下面列出了它们的说明。
  • ONLINE:节点处于联机状态
  • OFFLINE:节点处于脱机状态
  • IDLE:节点没有挂起的工作请求,并且已进入空闲状态。
  • IDLE_READY:节点没有挂起的工作请求,并且已准备好进入空闲状态。

下面列出了三个可组合node_state_desc值及其说明。
  • DAC:此节点是为专用管理连接保留的
  • THREAD_RESOURCES_LOW:由于内存不足的情况,无法在此节点上创建新线程。
  • 热添加:指示已添加节点以响应热添加 CPU 事件。
memory_object_address varbinary(8) 与此节点关联的内存对象的地址。 与sys.dm_os_memory_objects.memory_object_address的一对一关系
memory_clerk_address varbinary(8) 与此节点关联的内存分配器的地址。 与sys.dm_os_memory_clerks.memory_clerk_address的一对一关系
io_completion_worker_address varbinary(8) 分配给此节点的 IO 完成的工作线程的地址。 与sys.dm_os_workers.worker_address的一对一关系
memory_node_id smallint 此节点所属的内存节点的 ID。 多对一关系sys.dm_os_memory_nodes.memory_node_id。
cpu_affinity_mask bigint 用于标识此节点所关联的 CPU 的位图。
online_scheduler_count smallint 此节点管理的联机计划程序数。
idle_scheduler_count smallint 没有活动的工作线程的联机计划程序数目。
active_worker_count int 在此节点所管理的所有计划程序上处于活动状态的工作线程数目。
avg_load_balance int 此节点上每个计划程序的平均任务数。
timer_task_affinity_mask bigint 用于标识可为其分配计时器任务的计划程序的位图。
permanent_task_affinity_mask bigint 用于标识可为其分配永久性任务的计划程序的位图。
resource_monitor_state bit 每个节点都分配有一个资源监视器。 资源监视器可以处于运行或空闲状态。 值 1 表示正在运行,值 0 表示处于空闲状态。
online_scheduler_mask bigint 标识此节点的进程关联掩码。
processor_group smallint 标识此节点的处理器组。
cpu_count int 此节点可用的 CPU 数。
pdw_node_id int 此分发所在节点的标识符。

适用于:Azure Synapse Analytics、Analytics Platform System (PDW)

权限

对于 SQL Server 和 SQL 托管实例,需要 VIEW SERVER STATE 权限。

在SQL 数据库基本、S0S1 服务目标以及弹性池中的数据库、服务器管理员帐户、Microsoft Entra 管理员帐户或服务器角色的成员##MS_ServerStateReader##身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色中的成员身份。

SQL Server 2022 及更高版本的权限

要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。

另请参阅

与 SQL Server 操作系统相关的动态管理视图 (Transact-SQL)
软件 NUMA (SQL Server)