Если вы хотите выполнить детальную аппаратную диагностику на постгреве, вы можете использовать valgrind
.
В частности, вы можете использовать следующую команду.
valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes ./postgres -D your_data_dir
Обратите внимание, что такие приборы требует Postgres быть скомпилирован с -g
, то есть в вашей команде configure
, что вам нужно сделать configure --enable-debug
.
Затем вы можете начать сеанс клиента как обычно: psql database_name
. И затем введите запрос для выполнения. (Обратите внимание, что при запросе на процессор, который включает в себя агрегаты, профиль может привести к значительному замедлению. Поэтому вы, вероятно, должны взять небольшой образец своих данных для целей профиля.)
После завершения исполнения быть несколькими выходными файлами, произведенными valgrind
, а именно callgrind.$pid.out
, в котором $pid
- это идентификатор процесса всех процессов postgres, включая бэкэнд, и тот, который отвечает за обработку клиентского сеанса, на котором вы выполнили запрос. Предположим, что pid для этого процесса - это 12345
, что вам нужно сделать, чтобы преобразовать этот выходной файл необработанного профиля в удобочитаемое для человека представление. Вы будете использовать следующую команду.
callgrind_annotate --auto=yes callgrind.12345.out > profie.txt
Пожалуйста, пост код вашего 'calc_area' функции –
отсутствие статистики. (или: orverly skew destributions. Или: bad datamodel) – wildplasser
это действительно иностранный FOREIGN DATA WRAP с использованием стороннего API для вычисления областей. Ввод - это идентификатор лица, выход - область с двойной точностью. @a_horse_with_no_name – user3329081