同时进行空间SQL查询的速度较慢

时间:2014-12-12 06:23:43

标签: sql-server sql-server-2012 spatial

我有一个相当简单的空间查询,通常在大约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

1 个答案:

答案 0 :(得分:1)

看起来问题确实是SQL Server试图以比应用程序处理数据更快的速度返回数据。我找到了几种不同的方法来缓解这个问题。

  1. 在几何体列上使用Reduce()函数。我必须使用.00003因子才能使多边形保持完整但数据集大小仍然减少了6倍。
  2. 默认情况下,在较高的缩放级别关闭地图图层。较低的缩放级别意味着较小的数据集。
  3. 这些解决方案共同产生了很大的不同,但我仍然看到有20多个用户同时使用地图图层的延迟。

相关问题