如何提高 SQL Azure 查询性能

Posted

技术标签:

【中文标题】如何提高 SQL Azure 查询性能【英文标题】:How to Improve SQL Azure Query Performance 【发布时间】:2015-06-02 03:12:36 【问题描述】:

我正在使用 EF 6 执行 SqlQuery,这是一个 SELECT 语句,返回 47 列,最多 500 行。该查询有八个LEFT JOIN 语句。

在我的本地环境中,查询只需要大约 300 毫秒,如 Express Profiler 中所示。

在 SQL Azure 上,相同的查询可能需要 4800 毫秒,如 SQL Azure 门户上的查询性能 > 查询计划详细信息部分所示。层级为 S0。

在测试时,只有一个本地会话。访问 SQL Azure 时可能只有不到 10 个会话。它仅在开发环境中。

造成差异的原因是什么,我可以做些什么来提高性能?

【问题讨论】:

向我们展示查询、执行计划、您的 PC 与 SQL Azure 上运行的会话数、您在 SQL Azure 上的性能等级等。 @ta.speot.is 如何获取执行计划? 在运行查询之前按 Ctrl+M 【参考方案1】:

如果查询未按预期运行,SQL azure 有很多事情需要考虑。与普通服务器不同,SQL azure 性能以 DTU 的形式表示,它仅表示可以根据性能层处理的事务量。引用 MDSN..,具有 5 个 DTU 的性能级别的功率是具有 1 个 DTU 的性能级别的五倍...

您是否也可以检查 sys.dm_db_resource_stats DMV 使用情况并查看指标状态,如果任何指标显示的值超过 90%,则意味着您的性能水平可能需要升级...

您还可以循环运行相同的查询并从 sys.dm_exec_requests 中捕获数据以查看任何等待和阻塞的迹象。

  select top 10* from sys.dm_exec_requests 
where session_id=<<sessionid from where you are running the query>>

【讨论】:

谢谢,我试试看。正如您可能知道的那样,我在 SQL Azure 性能调优方面经验很少。

以上是关于如何提高 SQL Azure 查询性能的主要内容,如果未能解决你的问题,请参考以下文章

如何提高子查询的性能或 sql 中子查询的替代方案

如何提高查询性能?

如何提高包含部分公共子查询的 SQL 查询性能

如何提高sql查询的性能?

如何提高sql查询的性能

如何提高sql中的查询性能?