我发现了Microsoft SQL Server(v13.0.1601)中的错误。也许我错了,但我没有在网上看到任何其他报道,所以我将在下面描述。
我们代码的一部分使用空间索引。我们有一个名为'SpritePositions'的表,它包含多边形和一个'Sprite'表,每个表都链接到许多SpritePositions。每个Sprite都有一个使用geometry :: UnionAggregate调用填充的多边形,它组合了相应SpritePositions的每个多边形。
很少,Sprite可能包含大量SpritePosition,UnionAggregate调用需要一些时间才能完成。有趣的是,这个时间与SpritePosition多边形的数量并不成线性比例。
一些实验表明,对于500个多边形,执行UnionAggregate大约需要4秒,对于1000个多边形大约需要20秒。对于10000多边形,SQL Server执行此操作:
看起来像SqlServer中的内存泄漏。它永远不会返回 - ram使用量不断增长,CPU使用率只占一个完整核心。没有进一步的sql调用返回,唯一的解决方案是杀死Sql服务器进程。
所以我的问题 - 还有其他人遇到过这个吗?有什么我想念的吗?