18.9. СÑаÑиÑÑика вÑемени вÑполнениÑ
18.9.1. Ð¡Ð±Ð¾Ñ ÑÑаÑиÑÑики по запÑоÑам и индекÑам
ÐÑи паÑамеÑÑÑ ÑпÑавлÑÐµÑ ÑÑнкÑиÑми ÑбоÑа ÑÑаÑиÑÑики на ÑÑовне ÑеÑвеÑа. Ðогда ведÑÑÑÑ ÑÐ±Ð¾Ñ ÑÑаÑиÑÑики, ÑобиÑаемÑе даннÑе можно пÑоÑмоÑÑеÑÑ Ð² ÑемейÑÑве ÑиÑÑемнÑÑ
пÑедÑÑавлений pg_stat и pg_statio. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ðлаве 26.
track_activities(boolean)ÐклÑÑÐ°ÐµÑ ÑÐ±Ð¾Ñ Ñведений о ÑекÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ , вÑполнÑÑÑÐ¸Ñ ÑÑ Ð²Ð¾ вÑÐµÑ ÑеанÑÐ°Ñ (в ÑаÑÑноÑÑи, оÑÑлеживаеÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¸ вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑÑка командÑ). Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн. ÐамеÑÑÑе, ÑÑо даже когда ÑÐ±Ð¾Ñ Ð²ÐµÐ´ÑÑÑÑ, ÑобÑÐ°Ð½Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð´Ð¾ÑÑÑпна не Ð´Ð»Ñ Ð²ÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелей, а ÑолÑко Ð´Ð»Ñ ÑÑпеÑполÑзоваÑелей и полÑзоваÑелей, имеÑÑÐ¸Ñ Ð¿Ñава Ñоли
pg_read_all_stats. Также полÑзоваÑелÑм доÑÑÑпна инÑоÑмаÑÐ¸Ñ Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ Ð² Ð¸Ñ ÑеанÑÐ°Ñ (вклÑÑÐ°Ñ ÑеанÑÑ Ñолей, в коÑоÑÑе ÑÑи полÑзоваÑели вклÑÑенÑ). ÐоÑÑÐ¾Ð¼Ñ ÑÑо не должно повлеÑÑ ÑиÑки, ÑвÑзаннÑе Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑÑÑ. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.track_activity_query_size(integer)ÐадаÑÑ Ð¾Ð±ÑÑм памÑÑи, ÑезеÑвиÑÑемой Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑекÑÑа вÑполнÑемой в данной Ð¼Ð¾Ð¼ÐµÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² каждом акÑивном ÑеанÑе, Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_stat_activity.query. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в байÑÐ°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1024 байÑа. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.track_counts(boolean)ÐклÑÑÐ°ÐµÑ ÑÐ±Ð¾Ñ ÑÑаÑиÑÑики акÑивноÑÑи в базе даннÑÑ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐºÐ»ÑÑÑн, Ñак как ÑобÑÐ°Ð½Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ ÑÑебÑеÑÑÑ Ð´ÐµÐ¼Ð¾Ð½Ñ Ð°Ð²ÑооÑиÑÑки. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.
track_io_timing(boolean)ÐклÑÑÐ°ÐµÑ Ð·Ð°Ð¼ÐµÑ Ð²Ñемени опеÑаÑий ввода-вÑвода. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑÑн, Ñак как Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ замеÑа ÑÑебÑеÑÑÑ Ð¿Ð¾ÑÑоÑнно запÑаÑиваÑÑ ÑекÑÑее вÑÐµÐ¼Ñ Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно замедлиÑÑ ÑабоÑÑ Ð½Ð° некоÑоÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . ÐÐ»Ñ Ð¾ÑÐµÐ½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð´ÐµÑжек замеÑа вÑемени на ваÑей плаÑÑоÑме можно воÑполÑзоваÑÑÑÑ ÑÑилиÑой pg_test_timing. СÑаÑиÑÑÐ¸ÐºÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода можно полÑÑиÑÑ ÑеÑез пÑедÑÑавление
pg_stat_database, в вÑводе EXPLAIN (когда иÑполÑзÑеÑÑÑ Ð¿Ð°ÑамеÑÑBUFFERS), Ð¾Ñ Ð¿ÑоÑеÑÑа авÑооÑиÑÑки, вÑполнÑÑÑего опеÑаÑии оÑиÑÑки и ÑбоÑа ÑÑаÑиÑÑики, когда ÑÑÑановлен паÑамеÑÑ log_autovacuum_min_duration, и ÑеÑез пÑедÑÑавление pg_stat_statements. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.track_wal_io_timing(boolean)ÐклÑÑÐ°ÐµÑ Ð·Ð°Ð¼ÐµÑ Ð²Ñемени опеÑаÑий ввода-вÑвода WAL. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑÑн, Ñак как Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ замеÑа ÑÑебÑеÑÑÑ Ð¿Ð¾ÑÑоÑнно запÑаÑиваÑÑ ÑекÑÑее вÑÐµÐ¼Ñ Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно замедлиÑÑ ÑабоÑÑ Ð½Ð° некоÑоÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . ÐÐ»Ñ Ð¾ÑÐµÐ½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð´ÐµÑжек замеÑа вÑемени на ваÑей плаÑÑоÑме можно воÑполÑзоваÑÑÑÑ ÑÑилиÑой pg_test_timing. СÑаÑиÑÑÐ¸ÐºÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода можно полÑÑиÑÑ ÑеÑез пÑедÑÑавление
pg_stat_wal. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.track_functions(enum)ÐклÑÑÐ°ÐµÑ Ð¿Ð¾Ð´ÑÑÑÑ Ð²Ñзовов ÑÑнкÑий и вÑемени Ð¸Ñ Ð²ÑполнениÑ. ÐнаÑение
plвклÑÑÐ°ÐµÑ Ð¾ÑÑлеживание ÑолÑко ÑÑнкÑий на пÑоÑедÑÑном ÑзÑке, аallâ Ñакже ÑÑнкÑий на ÑзÑÐºÐ°Ñ SQL и C. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ ânone, Ñо еÑÑÑ ÑÐ±Ð¾Ñ ÑÑаÑиÑÑики по ÑÑнкÑиÑм оÑклÑÑÑн. ÐзмениÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.ÐÑимеÑание
ФÑнкÑии на ÑзÑке SQL, доÑÑаÑоÑно пÑоÑÑÑе Ð´Ð»Ñ Â«Ð²Ð½ÐµÐ´ÑениÑ» в вÑзÑваÑÑий запÑоÑ, оÑÑлеживаÑÑÑÑ Ð½Ðµ бÑдÑÑ Ð²Ð½Ðµ завиÑимоÑÑи Ð¾Ñ ÑÑого паÑамеÑÑа.
stats_temp_directory(string)ÐадаÑÑ ÐºÐ°Ñалог, в коÑоÑом бÑдÑÑ Ñ ÑаниÑÑÑÑ Ð²ÑеменнÑе даннÑе ÑÑаÑиÑÑики. ÐÑÐ¾Ñ Ð¿ÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð°Ð±ÑолÑÑнÑм или задаваÑÑÑÑ Ð¾ÑноÑиÑелÑно каÑалога даннÑÑ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
pg_stat_tmp. ÐÑли ÑазмеÑÑиÑÑ Ñелевой каÑалог в Ñайловой ÑиÑÑеме в ÐÐУ, ÑÑо ÑÐ½Ð¸Ð·Ð¸Ñ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° ÑизиÑеÑкое диÑковое Ñ ÑанилиÑе и Ð¼Ð¾Ð¶ÐµÑ ÑвелиÑиÑÑ Ð±ÑÑÑÑодейÑÑвие. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.
18.9.2. ÐониÑоÑинг ÑÑаÑиÑÑики
compute_query_id(enum)ÐклÑÑÐ°ÐµÑ Ð²ÑÑиÑление иденÑиÑикаÑоÑа запÑоÑа в ÑдÑе. ÐденÑиÑикаÑоÑÑ Ð·Ð°Ð¿ÑоÑа могÑÑ Ð¾ÑобÑажаÑÑÑÑ Ð² пÑедÑÑавлении
pg_stat_activityв вÑводеEXPLAINили запиÑÑваÑÑÑÑ Ð² жÑÑнал, пÑи заданнÑм ÑооÑвеÑÑÑвÑÑÑим обÑазом паÑамеÑÑе log_line_prefix. ÐденÑиÑикаÑоÑÑ Ð·Ð°Ð¿ÑоÑов Ñакже Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑÑиÑлÑÑÑÑÑ Ð´Ð»Ñ ÑаÑÑиÑÐµÐ½Ð¸Ñ pg_stat_statements. ÐбÑаÑиÑе внимание, ÑÑо в каÑеÑÑве алÑÑеÑнаÑÐ¸Ð²Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð²Ð½ÐµÑний модÑлÑ, еÑли меÑод вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа запÑоÑа в ÑдÑе ÑвлÑеÑÑÑ Ð½ÐµÐ¿ÑиемлемÑм. ÐÑо вÑÑиÑление в ÑдÑе нÑжно полноÑÑÑÑ Ð¾ÑклÑÑиÑÑ. ÐопÑÑÑимÑе знаÑениÑ:off(вÑегда оÑклÑÑено);on(вÑегда вклÑÑено);auto, коÑоÑое позволÑÐµÑ Ñаким модÑлÑм, как pg_stat_statements, авÑомаÑиÑеÑки вклÑÑиÑÑ Ð´Ð°Ð½Ð½Ð¾Ðµ вÑÑиÑление;regress, коÑоÑое дейÑÑвÑÐµÑ Ñак же, какauto, но иденÑиÑикаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑа не показÑваеÑÑÑ Ð² вÑводе командÑEXPLAIN, ÑÑо облегÑÐ°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкое ÑегÑеÑÑионное ÑеÑÑиÑование. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа âauto.ÐÑимеÑание
ЧÑÐ¾Ð±Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑа гаÑанÑиÑованно вÑÑиÑлÑлÑÑ Ð¸ оÑобÑажалÑÑ ÑолÑко один иденÑиÑикаÑоÑ, вÑÑиÑлÑÑÑие его ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑдаваÑÑ Ð¾ÑибкÑ, еÑли иденÑиÑикаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑа Ñже бÑл вÑÑиÑлен.
log_statement_stats(boolean)log_parser_stats(boolean)log_planner_stats(boolean)log_executor_stats(boolean)ÐÑи паÑамеÑÑÑ Ð²ÐºÐ»ÑÑаÑÑ Ð²Ñвод ÑÑаÑиÑÑики по пÑоизводиÑелÑноÑÑи ÑооÑвеÑÑÑвÑÑÑего модÑÐ»Ñ Ð² пÑоÑокол ÑабоÑÑ ÑеÑвеÑа. ÐÑо гÑÑбÑй инÑÑÑÑÐ¼ÐµÐ½Ñ Ð¿ÑоÑилиÑованиÑ, Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ð¹ на ÑÑнкÑиÑ
getrusage()в опеÑаÑионной ÑиÑÑеме. ÐаÑамеÑÑlog_statement_statsвклÑÑÐ°ÐµÑ Ð²Ñвод обÑей ÑÑаÑиÑÑики по опеÑаÑоÑам, Ñогда как дÑÑгие ÑпÑавлÑÑÑ ÑÑаÑиÑÑикой по модÑлÑм (ÑазбоÑ, планиÑование, вÑполнение). ÐклÑÑиÑÑlog_statement_statsодновÑеменно Ñ Ð¿Ð°ÑамеÑÑами, ÑпÑавлÑÑÑими модÑлÑми, нелÑзÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñе ÑÑи паÑамеÑÑÑ Ð¾ÑклÑÑенÑ. ÐзмениÑÑ ÑÑи паÑамеÑÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.