Azure SQL 数据库 v12 的奇怪问题:数据库在第一次插入或删除执行时总是很慢,但 V11 不会

Weird issue with Azure SQL Database v12: the database is always slow on the first insert or delete execution, but not with V11

我们正在使用 MVC4,ASP.NET4.5,Entity Framework6.

当我们使用 Azure SQL 数据库 v11 时,初始记录通过 EF 插入和删除,运行良好且快速。但是现在,在 v12 上,我注意到初始插入和删除可能非常慢,尤其是当我们在插入时选择一个新值时。如果我们插入一条具有相同值的新记录,响应很快。我所说的延迟在 S1 上大约为 30 秒,在 S2 上为 15 秒,在 S3 上为 7 秒。

正如我所说,我们在 v11 上从未遇到过这种情况。

非常感谢收到的任何想法。

编辑1

刚刚做了一些诊断,似乎我现在使用的视图第一次 运行 非常慢:

db.ExecuteStoreCommand("DELETE FROM Vw_Widget where Id={0}", ID);

我是否需要为 Azure SQL 数据库 v12 重新调整视图?

编辑2

再看一下代码,我发现我已经在视图中添加了一个删除触发器,所以基本上我已经设置了一个视图,这样我就可以在某些情况下使用这个触发器代码。我现在正尝试从应用程序中取出触发代码和 运行 它,这样 运行 会快很多。也许这段代码应该是一个存储过程。

您肯定需要对视图进行一些诊断以检查查询的性能,并且您可能需要调整查询。您所说的时间测量值太高,无法执行任何操作。请确保对目标表而不是视图进行插入或删除。最好的做法是不要使用视图来插入或删除。

您只能在 select 语句中使用视图。

我在将 sql 数据库 v2 迁移到 v12 时遇到了类似的问题。实际上我正在研究商业模式,我试图迁移到 S0。数据库的性能不好。一段时间后,我发现 dtu 模型有特定的视图来监控你需要什么类型的 provision 模型。如果是第一次出现问题,可能是您的应用程序正在执行大量查询以将数据加载到内存中,这些可能会影响您的 CRUD 语句的性能。

SELECT end_time , (SELECT 最大值(v) 来自(值(avg_cpu_percent) , (avg_data_io_percent) , (avg_log_write_percent) ) AS 值(v)) AS [avg_DTU_percent] 来自 sys.dm_db_resource_stats 按 end_time 降序排序;

有关此的更多信息,可以在这些页面上找到:

https://azure.microsoft.com/en-us/documentation/articles/sql-database-upgrade-server-portal/