使用异步调用时,我遇到了严重的SQL性能问题.我创建了一个小案例来证明这个问题.
我在SQL Server 2016上创建了一个数据库,它驻留在我们的LAN中(因此不是localDB).
在该数据库中,我有一个WorkingCopy包含2列的表:
Id (nvarchar(255, PK))
Value (nvarchar(max))
Run Code Online (Sandbox Code Playgroud)
DDL
CREATE TABLE [dbo].[Workingcopy]
(
[Id] [nvarchar](255) NOT NULL,
[Value] [nvarchar](max) NULL,
CONSTRAINT [PK_Workingcopy]
PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
在该表中,我插入了一条记录(id='PerfUnitTest',Value是一个1.5mb的字符串(一个较大的JSON数据集的zip)).
现在,如果我在SSMS中执行查询:
SELECT [Value]
FROM [Workingcopy]
WHERE id = 'perfunittest'
Run Code Online (Sandbox Code Playgroud)
我立即得到结果,我在SQL Servre Profiler中看到执行时间大约是20毫秒.一切正常.
使用plain从.NET(4.6)代码执行查询时SqlConnection:
// at this point, the connection …Run Code Online (Sandbox Code Playgroud)