如何提高 SQL Azure 查询性能
How to Improve SQL Azure Query Performance
我正在使用 EF 6 执行 SqlQuery
,这是一个 SELECT
语句,返回 47 列,最多 500 行。该查询有八个 LEFT JOIN
语句。
在我的本地环境中,查询只需要大约 300 毫秒,如 Express Profiler 中所示。
在 SQL Azure 上,同一个查询可能需要 4800 毫秒,如 SQL Azure 门户上的查询性能 > 查询计划详细信息部分所示。等级为 S0。
测试时,只有一个本地会话。访问 SQL Azure 时可能只有不到 10 个会话。仅适用于开发环境。
造成差异的原因是什么,我可以做些什么来提高性能?
SQL azure 如果查询不是 运行ning 作为 expected.Unlike 普通服务器,需要考虑很多事情,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>>
我正在使用 EF 6 执行 SqlQuery
,这是一个 SELECT
语句,返回 47 列,最多 500 行。该查询有八个 LEFT JOIN
语句。
在我的本地环境中,查询只需要大约 300 毫秒,如 Express Profiler 中所示。
在 SQL Azure 上,同一个查询可能需要 4800 毫秒,如 SQL Azure 门户上的查询性能 > 查询计划详细信息部分所示。等级为 S0。
测试时,只有一个本地会话。访问 SQL Azure 时可能只有不到 10 个会话。仅适用于开发环境。
造成差异的原因是什么,我可以做些什么来提高性能?
SQL azure 如果查询不是 运行ning 作为 expected.Unlike 普通服务器,需要考虑很多事情,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>>