Mapnik:太多" LIMIT 0"查询

时间:2016-09-17 06:16:48

标签: performance postgresql database-performance mapnik

我有一个包含多个图层的xml项目文件,其中许多图层又分为2个(低/高)或3个(低/中/高)图层,每个图层覆盖不同的缩放范围。整个层数(考虑细分)是42.我使用python-mapnik绑定mapnik 3.0.12。 好吧,如果我看看PostgreSQL日志,每次我在给定的缩放级别请求单个地图图像(一个简单的静态图像,而不是一系列图块)时,通常只需要12个(42个) )要执行的查询,我总是看到42次:

" duration:xx.xxx ms语句:"

接下来是查询itsefl的定义,再加上" LIMIT 0"在末尾。 然后我可以找到12次这个:

"持续时间:xx.xxx ms执行:"

这是关于实际需要执行的12个查询。 我想42个查询的尾随" LIMIT 0"是"检查查询",执行以分析哪个索引将是最好的使用等等...但我想知道是否有办法只对实际必须的查询执行此操作一次执行,而不是project.xml文件中的所有查询(图层)。

1 个答案:

答案 0 :(得分:0)

我注意到我的mapnik项目文件中的类似行为(我正在使用Node.js绑定)。通过在extent元素中提供sridDatasource参数,我能够减少对数据库的查询次数:

<Datasource>
    <Parameter name="extent">-180 -90,180 90</Parameter>
    <Parameter name="srid">4326</Parameter>
</Datasource>

我相信mapnik会在查询之前执行两个查询,以检索要素以确定SRID和图层的范围。通过在数据源中提前提供这些,mapnik不需要执行这些查询。