所有 XTP_THREAD_POOL 进程都在做什么?

Jos*_*ell 5 sql-server memory-optimized-tables sql-server-2016

我刚刚在sp_who使用MEMORY_OPTIMIZED表的SQL Server 2016 实例上XTP_THREAD_POOL运行,我看到几个进程正在运行:

xtp 废话

有关输出的其他一些详细信息:

  • XTP_THREAD_POOL结果集中正好有 6行
  • 我的系统有两个逻辑核心
    • 具体来说,它是一个带有 2 个插槽的 VM - 每个插槽都装有一个 1 核处理器
  • 所有这些任务都作为后台运行(sa)

这些进程在做什么?我在 Google 上没有找到太多关于此任务名称的信息。

TIA

Jos*_*ell 6

关于这些任务的信息确实很难获得。

文档(为内存中 OLTP 创建和管理存储 -> 可扩展性)说

在 SQL Server 2016 (13.x) 中,有多个并发线程负责将更改持久化到内存优化表。

虽然文档没有提到可能与这些并发线程相关联的“cmd”值,但Bob Ward 的 PowerPoint链接到上面的文档页面并添加了有关此过程的更多详细信息:

您可能会将这些视为命令 =XTP_THREAD_POOLXTP_PREEPMTIVE_TASK

因此,这些任务使内存中 OLTP 使用的数据和增量文件保持最新。 他们一直在后台运行。当他们空闲时,他们会等待DISPATCHER_QUEUE_SEMAPHORE等待。


介绍中还提到:

池的大小不应超过 # 个逻辑 CPU...

因此,看到其中 6 个进程在 2 个处理器的机器上运行,这有点令人惊讶。这可能是一个错误,或者自 Bob 的 PowerPoint 演示以来情况可能已经发生了变化。希望有比我更多的 Hekaton 智慧的人会过来权衡一下。

HTH