首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server 2017 Express比标准版快

SQL Server 2017 Express比标准版快
EN

Database Administration用户
提问于 2019-07-22 10:26:42
回答 4查看 1.5K关注 0票数 0

如何解释版比Web /标准版快得多?

这些是云托管中的多个VM。他们都经历了同样的问题。一些是关于Server 2012的,另一些是在2017年--同样的问题。所有机器都有最新的更新。

机器是足够好的工作: 8G,4核和DBs的大小小于1GB的数据。同样的机器。我甚至尝试在同一台机器上同时启用Express和,每次只启用一个实例,同样的问题。

无论web应用程序是在同一台机器上本地运行,还是通过网络远程访问SQL服务器,都是一样的问题。

DBs具有完全相同的数据。我使用了Express的备份,并将其加载到服务器上。这是一个带有SSD驱动器的VM。安装是尽可能标准的。我比较了SSMS中查看服务器属性的设置。文件很小,并且位于标准位置。

查询在表单中是多个,复杂的运行速度大约是Web的一半。这是一个可重复的问题,而不仅仅是一次。

它并不是特定于Web和服务器类型,因为它是在Express和Developer Edition上的开发机器上复制的。

Server设置似乎是相同的。

很多人都看过它,但我们找不出原因。

有人告诉我要举个例子:

代码语言:javascript
复制
    select top (500) * 
    from UserLog u  
    join staff s on  s.Username = u.username
    join Forms f on f.PageFile = u.PageFile
    left outer join Client c on c.CID=u.CID        
    order by u.id desc

执行计划完全相同。

这些是快递网络版的计划。在我看来是一样的。

以下是由SSMS (最新)测量的时间:

Express

网络版

通过多次尝试,Express在这个非常简单的查询上比以前快了50%。

非快件版有最小的DB大小吗?(这没有道理.)

EN

回答 4

Database Administration用户

发布于 2019-07-23 08:56:17

等待统计

在执行更差的查询的执行计划中,我们发现以下等待状态:

代码语言:javascript
复制
  <Wait WaitType="ASYNC_NETWORK_IO" WaitTimeMs="280" WaitCount="27" />
        </WaitStats>
        <QueryTimeStats CpuTime="14" ElapsedTime="295" />

对于查询执行的295ms280ms正在等待ASYNC_NETWORK_IO

因此,14ms cpu时间&没有这些等待状态的15ms运行时间对我来说是合理的。

实际执行计划中的这些细节意味着该问题与实例本身的性能无关,而是与这些行的处理直接相关。

ASYNC_NETWORK_IO

先前的回答中关于为什么ASYNC_NETWORK_IO由汤姆五世发生的一些部分

指的是托马斯LaRock发布的帖子

ASYNC_NETWORK_IO等待表示正在发生两种情况之一。第一种情况是会话(即SPID)正在等待客户端应用程序处理结果集,并向Server发送一个信号,说明它已准备好处理更多数据。第二,可能存在网络性能问题。

大多数情况下,我看到ASYNC_NETWORK_IO正在发生,这是由于应用程序处理行不够快(应用程序设计/应用程序服务器在重载/压力下)。

在验证应用程序之后,网络将成为下一个嫌疑人。

票数 4
EN

Database Administration用户

发布于 2019-07-22 13:55:48

您检查过各种服务器上的网络速度吗?

我也遇到了类似的问题,我们追踪到的是一条以100 mbps而不是1000 mbps运行的贴片线。

票数 1
EN

Database Administration用户

发布于 2019-07-22 14:36:35

不应该更快。如果您有相同的数据,在同一台机器上,在同一网络上,并且得到相同的执行计划,它似乎是软件本身中的一个配置设置。你试过这个吗?

代码语言:javascript
复制
--turn on statistics--

Set statistics time on;

set statistics IO on;

Go;

--then run your query--
select top (500) * 
    from UserLog u  
    join staff s on  s.Username = u.username
    join Forms f on f.PageFile = u.PageFile
    left outer join Client c on c.CID=u.CID        
    order by u.id desc

--do this for both and use to compare.  

这两个版本在性能上的主要差异在于标准为SQL服务器分配更多资源的能力。我会再次检查所有实例属性和数据库属性,但是如果您采用了标准的方法,您可能会比express更快。如果您要运行微小的查询,那么您不需要担心它,但是如果运行更大的查询,就会遇到分页问题。https://www.microsoft.com/en-us/sql-server/sql-server-2017-editions

想一想,就像比较一辆烂车和一辆标准车的速度。他们都能跑20英里,但也不能都跑120英里。那辆破车的时速可能会达到70英里。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/243440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档