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的例子吗?