【发布时间】:2020-01-22 20:26:28
【问题描述】:
目前,我的 Web 应用程序在两台基于云的 Windows 2012 R2 服务器上运行——一台运行 Tomcat,一台运行 SQL Server Express。 Windows 服务器是 4GB Intel XEON(R) CPU E5-2660 v2 @2.20 Gghz
我正在 Azure 的 PaaS(平台即服务)上测试我的应用程序。 我使用 Tomcat 9.0 创建了一个 Linux Web 应用程序来保存应用程序 (P1V2) 和一个 Azure SQL Server 来保存数据库 (S2)
我做的一个测试是比较在两个系统上生成 Excel 报告(使用 Apache POI)所需的时间。
在云系统(运行 SQL Server Express)上大约需要 10 秒。在 Azure 上大约需要 35 秒。
显然,我希望 Azure 系统至少与基于 SQL Server Express 的系统一样快,尤其是当云系统运行 SQL Server Express 时,其上限为 1GB 和 1 个核心。
我尝试了以下方法:
- 检查仪表板图表中是否有任何峰值 数据库。没有显着的 - DTU 最高为 25%
- 我自动添加了
Query Performance Insight / Recommendations / Automate调整数据库。这确实加快了速度,但绝不是 够了。 - 我读过Help, My Azure Site Performance Sucks! 和Why is running a query on SQL Azure so much slower? 和Azure SQL query slow
- 我检查了数据库和应用程序是否位于同一位置。 (西欧)
我想问题出在数据库上。
例如,我发现一个查询(使用 Query Performance Insight / Long Running Queries)在 Azure 上运行时间为 2 秒,在 SQL Server Express 上运行时间为 0 秒。请注意,我不是在问如何优化此查询。相反,我在想象,这个查询在 Azure 上花费的时间更长——使用相同的数据库架构、相同的数据和相同的索引——这可能是如何加快整个应用程序的一个线索。
SELECT cp.*
,(
SELECT min(market_date)
FROM mydb.rates ms
WHERE ms.curr1 = cp.curr1
AND ms.curr2= cp.curr2
) MIN_MARKETDATE
FROM pairs cp
order by curr1, curr2
【问题讨论】:
标签: sql-server azure cloud paas