我有一个相当简单的空间查询,通常在大约1秒内完成。作为我的负载测试的一部分,我从10个不同的线程发送查询,并且十个中的大多数花费更长时间,有时长达30秒。如果我添加更多线程,它会上升几分钟。 我看到的等待类型是async_network_io,但是没有返回超大量数据,SQL Sentry说我的服务器只使用了0.2%的网络管道。我的工作站的管道从未超过15%。有人可以向我解释一下我可以做什么来在一秒钟内完成所有执行的查询(最多合理数量的线程)?
以下是一个例子:
SELECT "Lon","Lat","ParcelID","ParcelPolygon".STAsBinary() as "ParcelPolygon"
FROM "ParcelData" WITH(INDEX("IX_ParcelData_SpatialHigh"))
WHERE "ParcelPolygon".Filter(geometry::STGeomFromText('POLYGON ((-149.61737394332886 61.52266425353893,
-149.61737394332886 61.525344727039275, -149.61175203323364 61.525344727039275, -149.61175203323364
61.52266425353893, -149.61737394332886 61.52266425353893))', 4326)) = 1
答案 0 :(得分:1)
看起来问题确实是SQL Server试图以比应用程序处理数据更快的速度返回数据。我找到了几种不同的方法来缓解这个问题。
这些解决方案共同产生了很大的不同,但我仍然看到有20多个用户同时使用地图图层的延迟。