1.
от того, что я прочитал, что хэши запрос и сохраняет его в БД, сохраняя текст FS. Поэтому следующая озабоченность более ожидаемым, то перегружен общая память:
если много текстов долго запроса накапливаются, внешний файл может расти неуправляемо большой
хэш текста так много меньше, чем текст, что я думаю, вам не стоит беспокоиться о потреблении памяти расширения, сравнивая длинные запросы. Особенно зная, что расширение использует анализатор запросов (который будет работать для каждые запрос ИНАЧЕ):
значение хеш-функции queryid вычисляется на пост-синтаксического анализа-анализа представление запросов
Настройка pg_stat_statements.max
В 10 раз больше нужно брать в 10 раз больше общей памяти, я полагаю. Рост должен быть linear. Это не сказано в документации, но логически должно быть так.
Нет ответа, если это безопасно или не устанавливать настройку на определенное значение, поскольку нет данных о других значениях конфигурации и HW, которые у вас есть. Но так как рост должен быть линейным, рассмотрите этот ответ: «если вы установите его на 5K, а время выполнения запросов почти ничего не изменится, тогда установка его на 50K продлит его почти ничего раз десять». Кстати, мой вопрос - кто гонг выкапывает 50000 медленных заявлений? :)
2.
Это расширение уже делает предварительную агрегацию для выражения «disvaled». Вы можете выбрать его прямо на БД, поэтому перемещение данных в другой бит и выбор его там даст вам только возможность разгрузить исходную БД и загрузить другую. Другими словами, вы сохраняете 50 МБ для запроса на оригинал, но тратите то же самое на другом. Имеет ли это смысл? Для меня - да. Это то, что я делаю сам. Но я также сохраняю планы выполнения для оператора (который не является частью расширения pg_stat_statements). Я считаю, что это зависит от того, что у вас есть и что у вас есть. Определенно, нет необходимости в этом только из-за ряда запросов. Опять же, если у вас нет такой большой файл, расширение может
В качестве способа восстановления, если это произойдет, pg_stat_statements может выбрать отбросить тексты запросов, после чего все существующие записи в pg_stat_statements будет выводить нулевые поля запроса
Я бегу с большим количеством материализованных представлений, следовательно, высокий запрос 'pg_stat_statements.max' :) Не слишком беспокоит пространство на жестком диске, в основном использование памяти, умаляющее реальную производительность запросов. > Это то, что я делаю сам. Если возможно, вы могли бы поделиться немного больше о своей предпочтительной настройке и о том, как вы обрабатывали выгрузку первичной базы данных из коллекции статистики? – user3467349
большая угроза файла не для пространства hdd, а для времени, которое требуется для его анализа. попробуйте запросить pg_stat_statements как суперпользователь (чтение файла формы заявления) и как не суперпользователь (без операторов). Если у вас большой файл, время значительно отличается. –
то, что я делаю, это установка стиля исправления - не оптимальная, но вот она: я установил max до 1000 (вместо этого ниже 5 раз). У меня есть работа, которая реплицирует pg_stat_statements на другой db с помощью dblink (без запроса, но с его хэшем) и другое задание, которое отправляет хэш и запрос в другую таблицу (с FK). и другое задание, которое сохраняет текущий план выполнения и отправляет его в третью таблицу с хешем (FK). таким образом, я могу сравнить, изменилось ли время выполнения и план со временем ... (Oracle имеет нечто похожее в CBO) –