Эта таблица передает данные GeoJSON напрямую в приложение OpenLayers через PHP (без GeoServer). Я открываю приложение в браузере и начинаю панорамирование, которое запрашивает сотни строк. Одна кастрюля может вернуть 1000 килобайт линейного геойсона в соответствии с firebug. Но heap_blks_read и heap_blks_hit никогда не получают намного выше, чем 17 КБ и 41 КБ соответственно. Запрос, который я использую для мониторинга скорости кэширования, приведен ниже. Мне просто интересно, как база данных выполняет много повторных запросов к моей таблице геометрии.
CREATE OR REPLACE VIEW vw_hit_rate AS
SELECT pg_statio_user_tables.relname,
pg_size_pretty(pg_statio_user_tables.heap_blks_read) AS read,
pg_size_pretty(pg_statio_user_tables.heap_blks_hit) AS hit,
round(pg_statio_user_tables.heap_blks_hit::numeric / (pg_statio_user_tables.heap_blks_hit + pg_statio_user_tables.heap_blks_read)::numeric, 3) AS round
FROM pg_statio_user_tables
WHERE pg_statio_user_tables.heap_blks_read > 0
ORDER BY round(pg_statio_user_tables.heap_blks_hit::numeric / (pg_statio_user_tables.heap_blks_hit + pg_statio_user_tables.heap_blks_read)::numeric, 3)
LIMIT 25;
Задача ещё не решена.
Других решений пока нет …