如何提高 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 查询性能的主要内容,如果未能解决你的问题,请参考以下文章