Sql server Sql server多线程性能问题

Sql server Sql server多线程性能问题,sql-server,Sql Server,首先,我将描述我的场景的细节,然后是我的问题: 我正在运行sql server 2017的一个实例,该实例具有以下属性(来自SSMS): 产品:SQL Server Express Edition(64位) 站台:NT x64 版本:10.0.2531.0 内存:3980MB 处理器:4(逻辑)2(物理) 排序规则:SQL\U拉丁文\U通用\U CP1\U CI\U AS 该实例的配置如下所示: 恢复模型设置为“简单”,我截断了日志文件 在运行查询之前通过dbcc shrinkfile 最大

首先,我将描述我的场景的细节,然后是我的问题:

  • 我正在运行sql server 2017的一个实例,该实例具有以下属性(来自SSMS):

    • 产品:SQL Server Express Edition(64位)
    • 站台:NT x64
    • 版本:10.0.2531.0
    • 内存:3980MB
    • 处理器:4(逻辑)2(物理)
    • 排序规则:SQL\U拉丁文\U通用\U CP1\U CI\U AS
  • 该实例的配置如下所示: 恢复模型设置为“简单”,我截断了日志文件
    在运行查询之前通过dbcc shrinkfile

  • 最大服务器内存设置为
    2147483647
    ,最小为默认值
  • 实例的所有连接都设置为具有read uncommitted的隔离级别
  • 有三个表的总大小约为3.2GB,我在其中执行选择操作,还有一个表初始化为空,我在其中执行插入操作。 所有表的相关列上都有聚集索引
  • 我执行一个存储过程,该过程执行上述表中的所有操作,但selects的访问模式是随机的,即每次调用sp时,它都会访问大表中的随机行(总的来说,每次调用它都会访问所有表中总共5行),并在小表中添加新行,因此,插入之间没有冲突
  • 我通过存储过程主体内的datediff测量存储过程的执行时间
  • 我运行两个可选方案: 我的应用程序中的一个线程调用sp N次,平均接收时间为12秒 我的应用程序中的4个线程同时调用sp N/4次,平均接收时间:0.8秒3秒5秒90秒 所有场景中的所有线程都会成功执行其所有查询
  • 我的假设和问题:

  • 由于多个线程访问如此大的表而导致内存污染增加,因此单线程会超出并发运行的线程,这似乎是合乎逻辑的,但是为什么会有并发线程超出单线程,即使它们运行的内存污染更严重?(我希望单个线程的性能超过所有并发线程。)

  • 虽然隔离级别为读取未提交,但这里是否存在锁定问题


  • 仅使用一个逻辑处理器的SQL Server Express Edition。你能举个sp的例子吗?