繁体   English   中英

Azure SQL 处理 SELECT 和在具有 2100 万条记录的同一个表上插入时性能不佳

[英]Azure SQL Performance bad when dealing with SELECT and INSERT on same Table with 21Mil records

我们有 Azure 托管解决方案,其中函数应用程序将记录插入 Azure SQL。我们有一个这样的 Azure function 我们首先执行 SELECT 查询(简单的索引列检查过滤器中是否存在使用的记录)。 如果没有找到记录,那么我们将插入到同一个表中。 当表中的记录少于 1000 条时,一切正常,但现在表中有 2100 万条记录,当有 100 个并发用户的负载时,从 function 应用程序调用一个简单的 SELECT 语句大约需要 25 秒。 我怀疑 SELECT 和 INSERT 是同一个 function 应用程序方法调用的一部分,我认为某处发生在表上的锁导致 SELECT 语句需要 25 秒。 我们确实看到计算利用率在那段时间达到了 80%。

我相信很多人可能遇到过类似的问题,无论如何要解决这个问题,我们在同一事务集中执行 SELECT 和 INSERT 并避免

这是一个“在不存在的地方插入”风格的问题。 这篇文章https://devblogs.microsoft.com/azure-sql/the-insert-if-not-exists-challenge-a-solution/应该可以帮助您解决它。

顺便说一句,在这种情况下使用查询规划器真的很有帮助,因为它会向您显示正在发生的事情以及需要多长时间,因此您不必推测。 请参阅https://learn.microsoft.com/en-us/sql/relational-databases/performance/display-an-actual-execution-plan?view=sql-server-ver15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM