小编hcd*_*hcd的帖子

使用SqlCommand Async方法时性能很差

使用异步调用时,我遇到了严重的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)

.net c# sql-server asynchronous async-await

89
推荐指数
1
解决办法
8869
查看次数

标签 统计

.net ×1

async-await ×1

asynchronous ×1

c# ×1

sql-server ×1