我正在尝试测试几何cassandra后端 .
我从OSM中获取了大约2M点,并使用带有geotools ecql的geomesa将 DWITHIN
和 BBOX
查询发送到cassandra .
然后我做了一些性能测试,结果对我来说看起来不合理 .
Cassandra安装在Linux机器上,具有16核xeon,32GB RAM和1个SSD驱动器 . 我每秒得到 ~150
个查询 .
我开始研究我的查询的几何执行计划 .
来自 org.locationtech.geomesa.index.utils.Explainer
的跟踪日志非常有用,它们可以很好地解释发生了什么 .
让我感到困惑的是通过cassandra进行范围扫描的数量 .
例如,我在日志中看到以下内容: Table: osm_poi_a7_c_osm_5fpoi_5fa7_attr_v2 Ranges (49): SELECT * FROM ..
数字 49
表示发送到cassandra的实际扫描范围数 . 不同的查询给出了不同的结果,它们的差异大约从10到130左右 .
10
对我来说看起来很合理,但 130
看起来很大 .
你能解释一下导致几何物发送如此大量范围扫描的原因吗?
有没有办法减少范围扫描的数量?
也许有一些配置选项?
还有其他选择吗?喜欢减少z-index的预设以改善这种查询?
不管怎么说,还是要谢谢你!
1 回答
通常,GeoMesa在其各种后端实现中使用通用查询规划算法 . 默认值更倾向于HBase和Accumulo,它们支持具有大量范围的扫描 . 但是,您可以使用各种旋钮来修改行为 .
您可以通过系统属性
geomesa.scan.ranges.target
减少在运行时生成的范围数(请参阅here) . 请注意,这将是一个粗略的上限,因此通常会获得比指定范围更多的范围 .创建简单要素类型模式时,还可以禁用分片,默认为4.生成的范围数将乘以分片数 . 见here和here .
如果您要查询多个'time bins'(默认为几周),则范围数将乘以您要查询的时间段数 . 您可以在创建架构时将其设置为更长的时间间隔;见here .
谢谢,