Mapnik: слишком много запросов LIMIT 0

У меня есть файл проекта xml с несколькими слоями, многие из которых, в свою очередь, разделены на 2 (низкий/высокий) или 3 (низкий/средний/высокий) слои, каждый из которых охватывает разные диапазоны масштабирования. Всего слоев (с учетом подразделов) 42. Я использую связку python-mapnik с mapnik 3.0.12. Что ж, если я взгляну на журналы PostgreSQL, каждый раз, когда я делаю запрос на одно изображение карты (простое статическое изображение, а не набор тайлов) с заданным уровнем масштабирования, для этого обычно требуется только 12 (из 42 ) запросов, которые нужно выполнить, я всегда вижу 42 раза это:

"длительность: xx.xxx мс оператор: "

за которым следует определение самого запроса плюс "LIMIT 0" в конце. Тогда я могу найти 12 раз это:

"длительность: xx.xxx мс выполнить:"

что составляет около 12 запросов, которые на самом деле необходимо было выполнить. Я предполагаю, что 42 запроса с конечным «LIMIT 0» являются «проверочными запросами», выполняемыми для анализа того, какой индекс лучше всего использовать и т. д., но я хотел бы знать, есть ли способ сделать это только для запросов, которые фактически должны выполняться одновременно, а не для всех запросов (слоев) в файле project.xml.


person Andrea    schedule 17.09.2016    source источник


Ответы (1)


Я заметил подобное поведение в моем файле проекта mapnik (я работаю с привязками Node.js). Мне удалось уменьшить количество запросов к базе данных, предоставив параметры extent и srid в элементе Datasource:

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

Я считаю, что mapnik выполняет два запроса перед запросом, чтобы получить функции для определения SRID и экстента слоя. Предоставив их заранее в источнике данных, mapnik не нужно будет выполнять эти запросы.

person forrert    schedule 19.09.2016
comment
Я понял, что это моя вина: в моем коде я неоднократно вызывал метод mapnik.load_map(...) при каждом запросе тайла, а не только один раз при запуске сервера. - person Andrea; 04.10.2016