C# 在SQL AZURE中更新地理列时是否需要间歇性的长CLR等待?

C# 在SQL AZURE中更新地理列时是否需要间歇性的长CLR等待?,c#,sql-server,azure-sql-database,spatial,C#,Sql Server,Azure Sql Database,Spatial,我有一个包含14条记录的表,下面的查询使用“ExecuteSqlCommandAsync”在实体框架中运行 此查询通常在2到10毫秒内执行。。但是每小时一到两次需要10到30秒。。职位类型为“地理” 我能够在几次打嗝期间捕获一些等待类型的数据,并注意到等待通常是CLR\u CRST或SQLCLR\u APPDOMAIN,其中有一些SOS\u调度程序\u产量在这里和那里涓涓细流 这个服务器几乎没有负载,这只是我用一个用户进行的测试。我对空间数据相当陌生,所以可能这只是使用类似于这样的CLR类型所带

我有一个包含14条记录的表,下面的查询使用“ExecuteSqlCommandAsync”在实体框架中运行

此查询通常在2到10毫秒内执行。。但是每小时一到两次需要10到30秒。。职位类型为“地理”

我能够在几次打嗝期间捕获一些等待类型的数据,并注意到等待通常是CLR\u CRST或SQLCLR\u APPDOMAIN,其中有一些SOS\u调度程序\u产量在这里和那里涓涓细流


这个服务器几乎没有负载,这只是我用一个用户进行的测试。我对空间数据相当陌生,所以可能这只是使用类似于这样的CLR类型所带来的东西?

因此,我们的空间查询似乎突破了S1/S0 Azure所能提供的界限。。。我们从S0升级到S1,没有看到任何改进,但我想现在停止升级还为时过早

我最终发现了这个 sys.resource_stats


看到cpu在100时达到峰值,然后一切都会爆炸。。。现在我们在S2,一切都很愉快,我只是记录了大量的资源数据来跟踪使用情况……

似乎有些奇怪。我不习惯使用AZURE,但在SQL 2008、2012或2014中,我从未使用EntityFramework、ADO或普通SQL查询体验过地理或几何类型。我的假设是有东西暂时锁定了表或行。至于它是什么,我无能为力。这是我的想法,但没有其他疑问,甚至运行。。。我正在轮询dm_exec_请求以获取有关等待统计信息,这是唯一正在执行的查询,它永远都在等待。。。目前,当我从一个不同的表中选择数据时,它将挂起在PREEMPTIVE_OS_CREATEFILE上,并旋转最多2分钟。。。唯一的查询正在执行,它只是旋转了2到5分钟…真奇怪。我确实记得在过去的某个地方读到,Azure在空间类型方面不如专门的SQL安装那么好,但这感觉不一样——我确信它更多地是在空间方法上,而不仅仅是插入/更新函数。你有没有试过转移到非异步EF方法(只是为了检查它不是EF/AZURE)问题?是的,我希望这是答案,这样我就可以举手继续:-)我改变了一些方法,不使用异步,但这没有帮助。将整个堆栈更改为非异步将是一件痛苦的事情。现在,我们将整个过程转移到队列/工作者角色场景中,混合使用一些Redis来简化一切,并希望解决问题:-/好吧,所以我现在的理论是,我们实际上在azure中达到了扩展极限。。。我已经设置了任务来记录所有的资源利用率,并将数据库放大,以查看我们在本周剩下的时间里是否有相同的问题
 UPDATE [par].[UserActivity]
                        SET Position = {0}
                        WHERE UserId=@userId