Express 版核心限制了歧义

Tho*_*mas 2 sql-server-2005 sql-server sql-server-2012 sql-server-express limits

我们有一个应用程序,它使用 MSSync 将数据从服务器下载到客户端的 SQL Server Express 2005。客户端具有双核和超线程,因此总共有 4 个核。

我对 SQL Server Express 的局限性进行了大量研究,我认为它归结为 1 个物理套接字,但在该套接字中最多使用 4 个内核。但是,这提出了一些与我在实践中所感知到的形成对比的问题。

我们的同步过程将 1 个内核最大化,淹没了同步过程,导致性能比具有更高 GHz 且未最大化 SQL Server Express 2005 使用的单个内核的设备慢 10-20 倍。

但是:如果允许 SQL Server 在 1 个套接字中使用 4 个内核,为什么它只使用 1 个用于我们的同步过程?这是因为 1 个连接有一个专用核心吗?还是我没有正确理解限制规格?将 SQL Server Express 升级到现代版本是否有助于让它使用更多内核?


我做了更多的研究。我使用了 SQL Server Express 2012 甚至 SQL Server Developer 2012 并且 ALL 最多只有 1 个核心。因此,显然,这与 Express 限制无关。

这可能是一个技术限制,您在单个连接/事务中的查询仅停留在单个核心上。很可能,这是保证事务一致性的逻辑要求。

我在 SQL Server 2012 中看到的是,负载会时不时地交换到另一个核心,但它永远不会同时使用超过 1 个核心。甚至没有开发版。

如果有人能证实这些假设,那将是受欢迎的。

Pau*_*ite 5

SQL Server 2005 Express 支持最多具有四个内核的单个套接字。

每个核心都映射到一个 SQLOS调度程序VISIBLE ONLINEsys.dm_os_schedulers动态管理视图中,每个内核有一个调度程序。以下屏幕截图取自在具有包含四个内核的单插槽 CPU 的机器上运行的 SQL Server 2005 Express 实例:

sys.dm_os_schedulers

一般SQLOS模式是:

  • 客户端批处理中的语句映射到一个或多个任务。
  • 每个任务都绑定到一个工作线程。
  • 工作线程绑定到调度程序。

串行执行计划中,只有一个任务,并且只使用一个调度程序。SQL Server Express Edition 仅支持串行执行。因此,每个语句只能使用一个内核。

其他版本的 SQL Server 能够生成并行执行计划,其中单个语句可以生成多个任务,然后可以在多个调度程序上并发运行。这通常仅限于读取数据(而不是写入数据)的操作。

在 SQL Server 2014 之前,并行数据修改仅限于索引(重新)构建计划。General INSERT, UPDATE, DELETE, 和MERGEstatements 只能在执行计划的读取端使用并行性;数据修改始终是串行的(使用单个任务/工作程序/调度程序)。

SQL Server 2014 企业版(以及等效的开发人员和评估版)添加了仅对语句进行并行写入的功能SELECT INTO。SQL Server 2016 企业版进一步增加了一些INSERT...SELECT语句的并行写入。


所有这一切意味着 SQL Server Express Edition 只能为每个客户端语句批处理使用一个调度程序(= 一个核心)。拥有四个核心仅仅意味着可以同时执行四个单独的语句(来自不同的客户端/连接)。

如果未为特定调度程序设置关联掩码位,Windows 可能会选择在哪个物理执行单元上运行调度程序,这可能会随时间片而变化。如果设置了关联掩码位,则调度程序将绑定到特定的执行单元,Windows 无法移动它。

SQL Server Express 仍然可以(在适当的情况下)使用多个逻辑处理器同时批量加载单个未索引的堆表。这需要针对同一个表的四个单独的语句(在四个单独的连接上),并且必须满足特定条件。详细信息包含在数据加载性能指南中。还有一个偶然因素,因为 SQL Server 必须在连接时将单独的语句绑定到不同的调度程序。这本身就是一个复杂的话题。

我不熟悉“MSSync”,问题并没有确切说明任务是什么,但在许多情况下,实现最少记录的插入足以满足性能目标。避免在服务器端进行排序通常也是一个重要因素。高 CPU 利用率通常是加载数据时服务器端排序的指示。它通常是可以避免的。

正确配置的最小日志批量加载(不进行排序)应该在 CPU 耗尽之前使服务器的 I/O 能力饱和。也许可以询问后续问题,并提供正在执行的确切任务的详细信息。可能还有其他改进选项。