18.10. ÐÑиÑÑка #
ÐÑи паÑамеÑÑÑ ÑпÑавлÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ оÑиÑÑки. Ðа подÑобноÑÑÑми о ÑелÑÑ Ð¸ ÑÑнкÑионалÑноÑÑи оÑиÑÑки обÑаÑиÑеÑÑ Ðº РазделÑ 23.1.
18.10.1. ÐвÑомаÑиÑеÑÐºÐ°Ñ Ð¾ÑиÑÑка #
ÐÑи паÑамеÑÑÑ ÑпÑавлÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° авÑооÑиÑÑки. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.6. ÐамеÑÑÑе, ÑÑо многие из ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов могÑÑ Ð±ÑÑÑ Ð¿ÐµÑеопÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð½Ð° ÑÑовне ÑаблиÑ; Ñм. ÐаÑамеÑÑÑ Ñ ÑанениÑ.
autovacuum(boolean) #УпÑавлÑÐµÑ ÑоÑÑоÑнием демона, запÑÑкаÑÑего авÑооÑиÑÑкÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ вклÑÑÑн, но ÑÑÐ¾Ð±Ñ Ð°Ð²ÑооÑиÑÑка ÑабоÑала, нÑжно Ñакже вклÑÑиÑÑ track_counts. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако авÑооÑиÑÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ оÑклÑÑиÑÑ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.ÐамеÑÑÑе, ÑÑо даже еÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑклÑÑÑн, ÑиÑÑема бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Ð¿ÑоÑеÑÑÑ Ð°Ð²ÑооÑиÑÑки, когда ÑÑо Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.
autovacuum_worker_slots(integer) #ÐадаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑлоÑов ÑеÑвеÑа, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°ÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов авÑооÑиÑÑки. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð±ÑÑно
16, но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð¸Ð¶Ðµ, еÑли паÑамеÑÑÑ ÑдÑа не поддеÑживаÑÑ ÑÑо знаÑение (обÑÑно ÑÑо вÑÑвлÑеÑÑÑ Ð½Ð° ÑÑапе initdb). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.ÐдновÑеменно Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ ÑÑого знаÑÐµÐ½Ð¸Ñ Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ измениÑÑ autovacuum_max_workers.
autovacuum_max_workers(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло пÑоÑеÑÑов авÑооÑиÑÑки (не ÑÑиÑÐ°Ñ Ð¿ÑоÑеÑÑ, запÑÑкаÑÑий авÑооÑиÑÑкÑ), коÑоÑÑе могÑÑ Ð²ÑполнÑÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
3. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.ÐбÑаÑиÑе внимание, ÑÑо еÑли Ð´Ð»Ñ ÑÑого паÑамеÑÑа ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение вÑÑе autovacuum_worker_slots, Ñо ÑабоÑаÑÑ Ð¾Ð½ не бÑдеÑ, поÑколÑÐºÑ ÑабоÑие пÑоÑеÑÑÑ Ð°Ð²ÑооÑиÑÑки беÑÑÑÑÑ Ð¸Ð· пÑла ÑлоÑов, ÑÑÑанавливаемого ÑÑим паÑамеÑÑом.
autovacuum_naptime(integer) #ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ð·Ð°Ð¿ÑÑками авÑооÑиÑÑки Ð´Ð»Ñ Ð¾ÑделÑной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . Ðемон авÑооÑиÑÑки пÑовеÑÑÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÑеÑез заданнÑй инÑеÑвал вÑемени и вÑдаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
VACUUMиANALYZE, когда ÑÑо ÑÑебÑеÑÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ ÑÑой базÑ. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в ÑекÑÐ½Ð´Ð°Ñ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð´ÐµÑжка Ñавна одной минÑÑе (1min). ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.autovacuum_vacuum_threshold(integer) #ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло изменÑннÑÑ Ð¸Ð»Ð¸ ÑдалÑннÑÑ ÐºÐ¾ÑÑежей, пÑи коÑоÑом бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ
VACUUMÐ´Ð»Ñ Ð¾ÑделÑно взÑÑой ÑаблиÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 50 коÑÑежей. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_vacuum_insert_threshold(integer) #ÐадаÑÑ ÑиÑло добавленнÑÑ ÐºÐ¾ÑÑежей, пÑи доÑÑижении коÑоÑого бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ
VACUUMÐ´Ð»Ñ Ð¾ÑделÑно взÑÑой ÑаблиÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 1000 коÑÑежей. ÐÑи знаÑении -1 пÑоÑедÑÑа авÑооÑиÑÑки не бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑ Ð¾Ð¿ÐµÑаÑииVACUUMÑ ÑаблиÑами в завиÑимоÑÑи Ð¾Ñ ÑиÑла добавленнÑÑ ÑÑÑок. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_analyze_threshold(integer) #ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло добавленнÑÑ , изменÑннÑÑ Ð¸Ð»Ð¸ ÑдалÑннÑÑ ÐºÐ¾ÑÑежей, пÑи коÑоÑом бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ
ANALYZEÐ´Ð»Ñ Ð¾ÑделÑно взÑÑой ÑаблиÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 50 коÑÑежей. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_vacuum_scale_factor(floating point) #ÐадаÑÑ Ð¿ÑоÑÐµÐ½Ñ Ð¾Ñ ÑазмеÑа ÑаблиÑÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ðº
autovacuum_vacuum_thresholdпÑи вÑбоÑе поÑога ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑVACUUM. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0.2(20% Ð¾Ñ ÑазмеÑа ÑаблиÑÑ). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_vacuum_insert_scale_factor(floating point) #ÐадаÑÑ Ð¿ÑоÑÐµÐ½Ñ Ð¾Ñ Ð½ÐµÐ·Ð°Ð¼Ð¾ÑоженнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð² ÑаблиÑе, коÑоÑÑй бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ðº
autovacuum_vacuum_insert_thresholdпÑи вÑбоÑе поÑога ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑVACUUM. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0.2(20% Ð¾Ñ Ð½ÐµÐ·Ð°Ð¼Ð¾ÑоженнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð² ÑаблиÑе). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_analyze_scale_factor(floating point) #ÐадаÑÑ Ð¿ÑоÑÐµÐ½Ñ Ð¾Ñ ÑазмеÑа ÑаблиÑÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ðº
autovacuum_analyze_thresholdпÑи вÑбоÑе поÑога ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑANALYZE. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0.1(10% Ð¾Ñ ÑазмеÑа ÑаблиÑÑ). ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_vacuum_max_threshold(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво изменÑннÑÑ Ð¸Ð»Ð¸ ÑдалÑннÑÑ ÐºÐ¾ÑÑежей, пÑи доÑÑижении коÑоÑого бÑÐ´ÐµÑ ÑÑабаÑÑваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°
VACUUMÐ´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑÑ, Ñо еÑÑÑ Ð¾Ð³ÑаниÑение на знаÑение, вÑÑиÑлÑемое Ñ ÑÑÑÑом паÑамеÑÑовautovacuum_vacuum_thresholdиautovacuum_vacuum_scale_factor. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 100 000 000 коÑÑежей. ÐÑли Ñказано знаÑение-1, авÑооÑиÑÑка не бÑÐ´ÐµÑ Ð¾Ð³ÑаниÑиваÑÑ Ð²ÑполнениеVACUUMпо колиÑеÑÑÐ²Ñ Ð¸Ð·Ð¼ÐµÐ½ÑннÑÑ Ð¸Ð»Ð¸ ÑдалÑннÑÑ ÐºÐ¾ÑÑежей. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако данное знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¸Ð·Ð±ÑаннÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_freeze_max_age(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй возÑаÑÑ (в ÑÑанзакÑиÑÑ ) Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_class.relfrozenxidнекоÑоÑой ÑаблиÑÑ, пÑи доÑÑижении коÑоÑого бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑена опеÑаÑиÑVACUUMÐ´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий в ÑÑой ÑаблиÑе. ÐамеÑÑÑе, ÑÑо ÑиÑÑема запÑÑÑÐ¸Ñ Ð¿ÑоÑеÑÑÑ Ð°Ð²ÑооÑиÑÑки Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑикливаниÑ, даже еÑли Ð´Ð»Ñ Ð²ÑÐµÑ Ð´ÑÑÐ³Ð¸Ñ Ñелей авÑооÑиÑÑка оÑклÑÑена.ÐÑи оÑиÑÑке могÑÑ Ñакже ÑдалÑÑÑÑÑ ÑÑаÑÑе ÑÐ°Ð¹Ð»Ñ Ð¸Ð· подкаÑалога
pg_xact, поÑÑÐ¾Ð¼Ñ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑавниÑелÑно мало â 200 миллионов ÑÑанзакÑий. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа, но Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ ÐµÐ³Ð¾ можно опÑеделиÑÑ Ð¿Ð¾-дÑÑгомÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.autovacuum_multixact_freeze_max_age(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй возÑаÑÑ (в мÑлÑÑиÑÑанзакÑиÑÑ ) Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_class.relminmxidÑаблиÑÑ, пÑи доÑÑижении коÑоÑого бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑена опеÑаÑиÑVACUUMÐ´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов мÑлÑÑиÑÑанзакÑий в ÑÑой ÑаблиÑе. ÐамеÑÑÑе, ÑÑо ÑиÑÑема запÑÑÑÐ¸Ñ Ð¿ÑоÑеÑÑÑ Ð°Ð²ÑооÑиÑÑки Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑикливаниÑ, даже еÑли Ð´Ð»Ñ Ð²ÑÐµÑ Ð´ÑÑÐ³Ð¸Ñ Ñелей авÑооÑиÑÑка оÑклÑÑена.ÐÑи оÑиÑÑке мÑлÑÑиÑÑанзакÑий могÑÑ Ñакже ÑдалÑÑÑÑÑ ÑÑаÑÑе ÑÐ°Ð¹Ð»Ñ Ð¸Ð· подкаÑалогов
pg_multixact/membersиpg_multixact/offsets, поÑÑÐ¾Ð¼Ñ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑавниÑелÑно мало â 400 миллионов мÑлÑÑиÑÑанзакÑий. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа, но Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ ÐµÐ³Ð¾ можно опÑеделиÑÑ Ð¿Ð¾-дÑÑгомÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.1.autovacuum_vacuum_cost_delay(floating point) #ÐадаÑÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¿Ñи пÑевÑÑении пÑедела ÑÑоимоÑÑи, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð¿Ñи авÑомаÑиÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑиÑÑ
VACUUM. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐÑи знаÑении -1 пÑименÑеÑÑÑ Ð¾Ð±ÑÑÐ½Ð°Ñ Ð·Ð°Ð´ÐµÑжка vacuum_cost_delay. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 2 миллиÑекÑндÑ. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако его можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.autovacuum_vacuum_cost_limit(integer) #ÐадаÑÑ Ð¿Ñедел ÑÑоимоÑÑи, коÑоÑÑй бÑÐ´ÐµÑ ÑÑиÑÑваÑÑÑÑ Ð¿Ñи авÑомаÑиÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑиÑÑ
VACUUM. ÐÑи знаÑении-1(по ÑмолÑаниÑ) пÑименÑеÑÑÑ Ð¾Ð±ÑÑное знаÑение vacuum_cost_limit. ÐамеÑÑÑе, ÑÑо ÑÑо знаÑение ÑаÑпÑеделÑеÑÑÑ Ð¿ÑопоÑÑионалÑно ÑÑеди вÑÐµÑ ÑабоÑаÑÑÐ¸Ñ Ð¿ÑоÑеÑÑов авÑооÑиÑÑки, еÑли Ð¸Ñ Ð±Ð¾Ð»ÑÑе одного, Ñак ÑÑо ÑÑмма огÑаниÑений вÑÐµÑ Ð¿ÑоÑеÑÑов никогда не пÑевоÑÑ Ð¾Ð´Ð¸Ñ Ð´Ð°Ð½Ð½Ñй пÑедел. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко вpostgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако его можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.
18.10.2. ÐадеÑжка оÑиÑÑки по ÑÑоимоÑÑи #
Ðо вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ VACUUM и ANALYZE ÑиÑÑема ведÑÑ Ð²Ð½ÑÑÑенний ÑÑÑÑÑик, в коÑоÑом ÑÑммиÑÑÐµÑ Ð¾ÑениваемÑÑ ÑÑоимоÑÑÑ ÑазлиÑнÑÑ
вÑполнÑемÑÑ
опеÑаÑий ввода-вÑвода. Ðогда Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½Ð°Ñ ÑÑоимоÑÑÑ Ð¿ÑевÑÑÐ°ÐµÑ Ð¿Ñедел (vacuum_cost_limit), пÑоÑеÑÑ, вÑполнÑÑÑий ÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ, заÑÑÐ¿Ð°ÐµÑ Ð½Ð° некоÑоÑое вÑÐµÐ¼Ñ (vacuum_cost_delay). ÐаÑем ÑÑÑÑÑик ÑбÑаÑÑваеÑÑÑ Ð¸ пÑоÑеÑÑ Ð¿ÑодолжаеÑÑÑ.
ÐаннÑй подÑ
од Ñеализован Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð¼Ð¾Ð³Ð»Ð¸ ÑнизиÑÑ Ð²Ð»Ð¸Ñние ÑÑиÑ
команд на паÑаллелÑнÑÑ ÑабоÑÑ Ñ Ð±Ð°Ð·Ð¾Ð¹, за ÑÑÑÑ ÑменÑÑÐµÐ½Ð¸Ñ Ð½Ð°Ð³ÑÑзки на подÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода. ÐÑÐµÐ½Ñ ÑаÑÑо не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ, наÑколÑко бÑÑÑÑо вÑполнÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ (напÑимеÑ, VACUUM и ANALYZE), но оÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ как можно менÑÑе влиÑли на вÑполнение дÑÑгиÑ
опеÑаÑий Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ
. ÐдминиÑÑÑаÑоÑÑ Ð¸Ð¼ÐµÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑпÑавлÑÑÑ ÑÑим, наÑÑÑÐ°Ð¸Ð²Ð°Ñ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¾ÑиÑÑки по ÑÑоимоÑÑи.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ñежим оÑклÑÑÑн Ð´Ð»Ñ Ð²ÑполнÑемÑÑ
вÑÑÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ VACUUM. ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ ÐµÐ³Ð¾, нÑжно ÑÑÑановиÑÑ Ð² vacuum_cost_delay ненÑлевое знаÑение.
vacuum_cost_delay(floating point) #ÐÑодолжиÑелÑноÑÑÑ Ð²Ñемени, в ÑеÑение коÑоÑого пÑоÑеÑÑ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ°ÐºÑивнÑм пÑи пÑевÑÑении пÑедела ÑÑоимоÑÑи. ÐÑли ÑÑо знаÑение задаÑÑÑÑ Ð±ÐµÐ· ÐµÐ´Ð¸Ð½Ð¸Ñ Ð¸Ð·Ð¼ÐµÑениÑ, оно ÑÑиÑаеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñм в миллиÑекÑÐ½Ð´Ð°Ñ . ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
0, Ñо еÑÑÑ Ð·Ð°Ð´ÐµÑжка оÑиÑÑки по ÑÑоимоÑÑи оÑклÑÑена. ÐÑли задано положиÑелÑное знаÑение, оÑиÑÑка по ÑÑоимоÑÑи вклÑÑаеÑÑÑ.ÐÑи наÑÑÑойке инÑенÑивноÑÑи оÑиÑÑки длÑ
vacuum_cost_delayобÑÑно вÑбиÑаÑÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно неболÑÑие знаÑениÑ, вплоÑÑ Ð´Ð¾ 1 миллиÑекÑÐ½Ð´Ñ Ð¸ менÑÑе. ХоÑÑ Ð²vacuum_cost_delayможно задаваÑÑ Ð´ÑобнÑе знаÑÐµÐ½Ð¸Ñ Ð² миллиÑекÑÐ½Ð´Ð°Ñ , Ñакие задеÑжки могÑÑ Ð±ÑÑÑ Ð½ÐµÑоÑнÑми на ÑÑаÑÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ . Ðа ÑÐ°ÐºÐ¸Ñ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ Ð´Ð»Ñ ÑвелиÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑенÑивноÑÑиVACUUMпо ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑÑовнем, обеÑпеÑиваемÑм пÑи задеÑжке 1 мÑ, поÑÑебÑеÑÑÑ Ð½Ð°ÑÑÑаиваÑÑ Ð´ÑÑгие паÑамеÑÑÑ ÑÑоимоÑÑи оÑиÑÑки. Тем не менее Ð¸Ð¼ÐµÐµÑ ÑмÑÑл вÑбиÑаÑÑ Ð½Ð°ÑÑолÑко малÑÑ Ð·Ð°Ð´ÐµÑжкÑvacuum_cost_delay, наÑколÑко Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÐµÑпеÑиÑÑ Ð¿Ð»Ð°ÑÑоÑма; болÑÑие задеÑжки не бÑдÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ.vacuum_cost_page_hit(integer) #ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¾ÑиÑÑки бÑÑеÑа, оказавÑегоÑÑ Ð² обÑем кеÑе. ÐÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¿Ñла бÑÑеÑов, поиÑк в Ñ ÐµÑ-ÑаблиÑе и ÑканиÑование ÑодеÑжимого ÑÑÑаниÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
1.vacuum_cost_page_miss(integer) #ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¾ÑиÑÑки бÑÑеÑа, коÑоÑÑй нÑжно пÑоÑиÑаÑÑ Ñ Ð´Ð¸Ñка. ÐÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¿Ñла бÑÑеÑов, поиÑк в Ñ ÐµÑ-ÑаблиÑе, ÑÑение ÑÑебÑемого блока Ñ Ð´Ð¸Ñка и ÑканиÑование его ÑодеÑжимого. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
2.vacuum_cost_page_dirty(integer) #ÐÑимеÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð¾ÑиÑÑки, пÑи коÑоÑой изменÑеÑÑÑ Ð±Ð»Ð¾Ðº, не модиÑиÑиÑованнÑй Ñанее. Ð Ð½ÐµÑ Ð²ÐºÐ»ÑÑаеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑÐ½Ð°Ñ ÑÑоимоÑÑÑ Ð²Ð²Ð¾Ð´Ð°-вÑвода, ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ð·Ð°Ð¿Ð¸ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñнного блока на диÑк. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен
20.vacuum_cost_limit(integer) #ÐбÑÐ°Ñ ÑÑоимоÑÑÑ, пÑи накоплении коÑоÑой пÑоÑеÑÑ Ð¾ÑиÑÑки бÑÐ´ÐµÑ Ð·Ð°ÑÑпаÑÑ Ð½Ð° вÑемÑ, Ñказанное в
vacuum_cost_delay. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â200.
ÐÑимеÑание
ÐекоÑоÑÑе опеÑаÑии ÑÑÑанавливаÑÑ ÐºÑиÑиÑеÑкие блокиÑовки и поÑÑÐ¾Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð²ÐµÑÑаÑÑÑÑ ÐºÐ°Ðº можно бÑÑÑÑее. Ðо вÑÐµÐ¼Ñ ÑакиÑ
опеÑаÑий задеÑжка оÑиÑÑки по ÑÑоимоÑÑи не оÑÑÑеÑÑвлÑеÑÑÑ, Ñак ÑÑо Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð½Ð°Ñ Ð·Ð° ÑÑо вÑÐµÐ¼Ñ ÑÑоимоÑÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ пÑевÑÑаÑÑ ÑÑÑановленнÑй пÑедел. Ðо избежание ненÑжнÑÑ
длиÑелÑнÑÑ
задеÑжек в ÑакиÑ
ÑлÑÑаÑÑ
, ÑакÑиÑеÑÐºÐ°Ñ Ð·Ð°Ð´ÐµÑжка вÑÑиÑлÑеÑÑÑ Ð¿Ð¾ ÑоÑмÑле vacuum_cost_delay * accumulated_balance / vacuum_cost_limit и огÑаниÑиваеÑÑÑ Ð¼Ð°ÐºÑимÑмом, ÑавнÑм vacuum_cost_delay * 4.
18.10.3. Ðоведение по ÑмолÑÐ°Ð½Ð¸Ñ #
vacuum_truncate(boolean) #ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¿Ð¾Ð¿ÑÑÐºÑ Ð¿ÑоÑеÑÑа оÑиÑÑки ÑÑекаÑÑ Ð¿ÑÑÑÑе ÑÑÑаниÑÑ Ð² конÑе ÑаблиÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â
true. ÐÑли оно задано, командаVACUUMи пÑоÑеÑÑ Ð°Ð²ÑооÑиÑÑки вÑполнÑÑÑ ÑÑеÑение, а диÑковое пÑоÑÑÑанÑÑво, оÑвободивÑееÑÑ Ð¾Ñ ÑÑеÑÑннÑÑ ÑÑÑаниÑ, возвÑаÑаеÑÑÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑеме. ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ ÑÑеÑÐµÐ½Ð¸Ñ ÑÑебÑеÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкаACCESS EXCLUSIVEÐ´Ð»Ñ ÑаблиÑÑ. ÐÑли задан паÑамеÑÑTRUNCATEкомандÑVACUUM, он пеÑеопÑеделÑÐµÑ Ð·Ð½Ð°Ñение ÑÑого паÑамеÑÑа. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñакже пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ, изменив Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ñ ÑанениÑ.
18.10.4. ÐамоÑозка #
ЧÑÐ¾Ð±Ñ Ð¾Ð±ÐµÑпеÑиÑÑ ÐºÐ¾ÑÑекÑноÑÑÑ ÑабоÑÑ Ð´Ð°Ð¶Ðµ поÑле заÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий, Postgres Pro помеÑÐ°ÐµÑ Ð´Ð¾ÑÑаÑоÑно ÑÑаÑÑе ÑÑÑоки как замоÑоженнÑе. Такие ÑÑÑоки Ð²Ð¸Ð´Ð¸Ð¼Ñ Ð²Ñем. ÐÑÑгим ÑÑанзакÑиÑм не ÑÑебÑеÑÑÑ Ð¿ÑовеÑÑÑÑ Ñвои добавлÑÑÑие XID, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑÑ. Ðа помеÑÐºÑ ÑÑÑок как замоÑоженнÑÑ
оÑвеÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° VACUUM. СледÑÑÑие паÑамеÑÑÑ ÑпÑавлÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸ÐµÐ¼ замоÑÐ°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑок VACUUM и Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑанавливаÑÑÑÑ Ñ ÑÑÑÑом ÑкоÑоÑÑи ÑаÑÑ
Ð¾Ð´Ð¾Ð²Ð°Ð½Ð¸Ñ XID в ÑиÑÑеме и оÑобенноÑÑей доÑÑÑпа к даннÑм в оÑновнÑÑ
ÑабоÑиÑ
нагÑÑзкаÑ
. ÐодÑобнее о заÑикливании иденÑиÑикаÑоÑов ÑÑанзакÑий и ÑÑÑановке ÑÑиÑ
паÑамеÑÑов Ñм. ÐодÑаздел 23.1.5.
vacuum_freeze_table_age(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй возÑаÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_class.relfrozenxidÑаблиÑÑ, пÑи доÑÑижении коÑоÑогоVACUUMбÑÐ´ÐµÑ Ð¿ÑоизводиÑÑ Ð°Ð³ÑеÑÑивное ÑканиÑование. ÐгÑеÑÑивное ÑканиÑование оÑлиÑаеÑÑÑ Ð¾Ñ Ð¾Ð±ÑÑного ÑканиÑованиÑVACUUMÑем, ÑÑо заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ Ð²Ñе ÑÑÑаниÑÑ, коÑоÑÑе могÑÑ ÑодеÑжаÑÑ Ð½ÐµÐ·Ð°Ð¼Ð¾ÑоженнÑе XID или MXID, а не ÑолÑко Ñе, ÑÑо могÑÑ ÑодеÑжаÑÑ Ð¼ÑÑÑвÑе коÑÑежи. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 150 миллионов ÑÑанзакÑий. ХоÑÑ Ð¿Ð¾Ð»ÑзоваÑели могÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð»Ñбое знаÑение Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ двÑÑ Ð¼Ð¸Ð»Ð»Ð¸Ð°Ñдов, вVACUUMвведÑн внÑÑÑенний пÑедел Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвÑÑÑего знаÑениÑ, ÑавнÑй 95% Ð¾Ñ autovacuum_freeze_max_age, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑиодиÑеÑки запÑÑÐºÐ°ÐµÐ¼Ð°Ñ Ð²ÑÑÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°VACUUMимела ÑанÑÑ Ð²ÑполниÑÑÑÑ, пÑежде Ñем Ð´Ð»Ñ ÑаблиÑÑ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑена авÑооÑиÑÑка Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑикливаниÑ. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.vacuum_freeze_min_age(integer) #ÐадаÑÑ Ð²Ð¾Ð·ÑаÑÑ Ð´Ð»Ñ Ð¾ÑÑеÑки (в ÑÑанзакÑиÑÑ ), пÑи доÑÑижении коÑоÑого команда
VACUUMдолжна вÑзÑваÑÑ Ð·Ð°Ð¼Ð¾Ñаживание ÑÑÑÐ°Ð½Ð¸Ñ Ñ Ð±Ð¾Ð»ÐµÐµ Ñанними XID. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 50 миллионов ÑÑанзакÑий. ХоÑÑ Ð¿Ð¾Ð»ÑзоваÑели могÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð»Ñбое знаÑение Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ одного миллиаÑда, вVACUUMвведÑн внÑÑÑенний пÑедел Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвÑÑÑего знаÑениÑ, ÑавнÑй половине autovacuum_freeze_max_age, ÑÑÐ¾Ð±Ñ Ð¿ÑинÑдиÑелÑÐ½Ð°Ñ Ð°Ð²ÑооÑиÑÑка вÑполнÑлаÑÑ Ð½Ðµ ÑлиÑком ÑаÑÑо. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.vacuum_failsafe_age(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй возÑаÑÑ (в ÑÑанзакÑиÑÑ ) Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_class.relfrozenxidнекоÑоÑой ÑаблиÑÑ, пÑи доÑÑижении коÑоÑого Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼VACUUMпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑезвÑÑайнÑе меÑÑ Ð´Ð»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑÑÑика ÑÑанзакÑий, пÑиводÑÑего к глобалÑÐ½Ð¾Ð¼Ñ ÑбоÑ. ÐÑа ÑÑÑаÑÐµÐ³Ð¸Ñ Ð·Ð°ÑиÑÑVACUUMпÑименÑеÑÑÑ Ð² ÑкÑÑÑенном ÑлÑÑае. ÐбÑÑно заÑиÑнÑй Ñежим вклÑÑаеÑÑÑ, когда авÑооÑиÑÑка Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑÑÑика ÑÑанзакÑий Ñже вÑполнÑлаÑÑ Ð² ÑеÑение некоÑоÑого вÑемени. Ðднако Ð´Ð°Ð½Ð½Ð°Ñ ÑÑÑаÑÐµÐ³Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ñакже пÑименÑÑÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð»Ñбой опеÑаÑииVACUUM.ÐÑи ÑÑабаÑÑвании заÑиÑного Ñежима лÑÐ±Ð°Ñ Ð´ÐµÐ¹ÑÑвÑÑÑÐ°Ñ Ð·Ð°Ð´ÐµÑжка на оÑнове ÑÑоимоÑÑи болÑÑе не пÑименÑеÑÑÑ, далÑнейÑие неÑÑÑеÑÑвеннÑе задаÑи обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ (Ñакие как оÑиÑÑка индекÑа) пÑопÑÑкаÑÑÑÑ, а лÑÐ±Ð°Ñ Ð¸ÑполÑзÑÐµÐ¼Ð°Ñ Ð¡ÑÑаÑÐµÐ³Ð¸Ñ Ð´Ð¾ÑÑÑпа к бÑÑеÑÑ Ð¾ÑклÑÑаеÑÑÑ, в ÑезÑлÑÑаÑе Ñего
VACUUMÑÐ¼Ð¾Ð¶ÐµÑ Ñвободно иÑполÑзоваÑÑ Ð²Ñе обÑие бÑÑеÑÑ.Ðо ÑмолÑÐ°Ð½Ð¸Ñ â 1.6 миллиаÑда ÑÑанзакÑий. ХоÑÑ Ð¿Ð¾Ð»ÑзоваÑели могÑÑ ÑÑÑановиÑÑ Ð»Ñбое знаÑение из инÑеÑвала Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ 2.1 миллиаÑда,
VACUUMавÑомаÑиÑеÑки ÑвелиÑÐ¸Ñ Ð´ÐµÐ¹ÑÑвÑÑÑее знаÑение до 105% Ð¾Ñ autovacuum_freeze_max_age, еÑли заданное знаÑение менÑÑе.vacuum_multixact_freeze_table_age(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй возÑаÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_class.relminmxidÑаблиÑÑ, пÑи доÑÑижении коÑоÑого командаVACUUMбÑÐ´ÐµÑ Ð²ÑполнÑÑÑ Ð°Ð³ÑеÑÑивное ÑканиÑование. ÐгÑеÑÑивное ÑканиÑование оÑлиÑаеÑÑÑ Ð¾Ñ Ð¾Ð±ÑÑного ÑканиÑованиÑVACUUMÑем, ÑÑо заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ Ð²Ñе ÑÑÑаниÑÑ, коÑоÑÑе могÑÑ ÑодеÑжаÑÑ Ð½ÐµÐ·Ð°Ð¼Ð¾ÑоженнÑе XID или MXID, а не ÑолÑко Ñе, ÑÑо могÑÑ ÑодеÑжаÑÑ Ð¼ÑÑÑвÑе коÑÑежи. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 150 миллионов мÑлÑÑиÑÑанзакÑий. ХоÑÑ Ð¿Ð¾Ð»ÑзоваÑели могÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð»Ñбое знаÑение Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ двÑÑ Ð¼Ð¸Ð»Ð»Ð¸Ð°Ñдов, вVACUUMвведÑн внÑÑÑенний пÑедел Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвÑÑÑего знаÑениÑ, ÑавнÑй 95% Ð¾Ñ autovacuum_multixact_freeze_max_age, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑиодиÑеÑки запÑÑÐºÐ°ÐµÐ¼Ð°Ñ Ð²ÑÑÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°VACUUMимела ÑанÑÑ Ð²ÑполниÑÑÑÑ, пÑежде Ñем Ð´Ð»Ñ ÑаблиÑÑ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑена авÑооÑиÑÑка Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑикливаниÑ. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.1.vacuum_multixact_freeze_min_age(integer) #ÐадаÑÑ Ð²Ð¾Ð·ÑаÑÑ Ð´Ð»Ñ Ð¾ÑÑеÑки (в мÑлÑÑиÑÑанзакÑиÑÑ ), пÑи доÑÑижении коÑоÑого команда
VACUUMдолжна вÑзÑваÑÑ Ð·Ð°Ð¼Ð¾Ñаживание ÑÑÑÐ°Ð½Ð¸Ñ Ñ Ð±Ð¾Ð»ÐµÐµ Ñанними иденÑиÑикаÑоÑами мÑлÑÑиÑÑанзакÑий. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 5 миллионов мÑлÑÑиÑÑанзакÑий. ХоÑÑ Ð¿Ð¾Ð»ÑзоваÑели могÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð»Ñбое знаÑение Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ одного миллиаÑда, вVACUUMвведÑн внÑÑÑенний пÑедел Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑвÑÑÑего знаÑениÑ, ÑавнÑй половине autovacuum_multixact_freeze_max_age, ÑÑÐ¾Ð±Ñ Ð¿ÑинÑдиÑелÑÐ½Ð°Ñ Ð°Ð²ÑооÑиÑÑка не вÑполнÑлаÑÑ ÑлиÑком ÑаÑÑо. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.1.vacuum_multixact_failsafe_age(integer) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑнÑй возÑаÑÑ (в мÑлÑÑиÑÑанзакÑиÑÑ ) Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ
pg_class.relminmxidнекоÑоÑой ÑаблиÑÑ, пÑи доÑÑижении коÑоÑого Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼VACUUMпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑезвÑÑайнÑе меÑÑ Ð´Ð»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑÑÑика мÑлÑÑиÑÑанзакÑий, пÑиводÑÑего к глобалÑÐ½Ð¾Ð¼Ñ ÑбоÑ. ÐÑа ÑÑÑаÑÐµÐ³Ð¸Ñ Ð·Ð°ÑиÑÑVACUUMпÑименÑеÑÑÑ Ð² ÑкÑÑÑенном ÑлÑÑае. ÐбÑÑно заÑиÑнÑй Ñежим вклÑÑаеÑÑÑ, когда авÑооÑиÑÑка Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑÑÑика ÑÑанзакÑий Ñже вÑполнÑлаÑÑ Ð² ÑеÑение некоÑоÑого вÑемени. Ðднако Ð´Ð°Ð½Ð½Ð°Ñ ÑÑÑаÑÐµÐ³Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ñакже пÑименÑÑÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð»Ñбой опеÑаÑииVACUUM.ÐÑи ÑÑабаÑÑвании заÑиÑного Ñежима лÑÐ±Ð°Ñ Ð´ÐµÐ¹ÑÑвÑÑÑÐ°Ñ Ð·Ð°Ð´ÐµÑжка на оÑнове ÑÑоимоÑÑи болÑÑе не пÑименÑеÑÑÑ, а далÑнейÑие неÑÑÑеÑÑвеннÑе задаÑи обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ (Ñакие как оÑиÑÑка индекÑа) пÑопÑÑкаÑÑÑÑ.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ â 1.6 миллиаÑда мÑлÑÑиÑÑанзакÑий. ХоÑÑ Ð¿Ð¾Ð»ÑзоваÑели могÑÑ ÑÑÑановиÑÑ Ð»Ñбое знаÑение из инÑеÑвала Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ 2.1 миллиаÑда,
VACUUMавÑомаÑиÑеÑки ÑвелиÑÐ¸Ñ Ð´ÐµÐ¹ÑÑвÑÑÑее знаÑение до 105% Ð¾Ñ autovacuum_multixact_freeze_max_age, еÑли заданное знаÑение менÑÑе.vacuum_max_eager_freeze_failure_rate(floating point) #ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво ÑÑÑÐ°Ð½Ð¸Ñ (как пÑоÑÐµÐ½Ñ Ð¾Ñ Ð¾Ð±Ñего колиÑеÑÑва ÑÑÑÐ°Ð½Ð¸Ñ Ð¾ÑноÑениÑ), коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоÑканиÑоваÑÑ
VACUUM, но не оÑмеÑиÑÑ Ð² каÑÑе видимоÑÑи, ÑÑо вÑе ÑÑÑоки замоÑоженÑ, до оÑклÑÑÐµÐ½Ð¸Ñ Ð½ÐµÑеÑпеливого ÑканиÑованиÑ. ÐÑли ÑÑÑановлено знаÑение0, неÑеÑпеливое ÑканиÑование полноÑÑÑÑ Ð¾ÑклÑÑаеÑÑÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â0.03(3%).ÐбÑаÑиÑе внимание, ÑÑо когда вклÑÑено неÑеÑпеливое ÑканиÑование, в огÑаниÑении ÑÑиÑÑваÑÑÑÑ ÑолÑко неÑдаÑнÑе попÑÑки замоÑозки, но не ÑÑпеÑнÑе. ÐÐ»Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑва ÑÑпеÑнÑÑ Ð¿Ð¾Ð¿ÑÑок замоÑозки ÑÑÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¾ внÑÑÑеннее огÑаниÑение в 20% Ð¾Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼ÑÑ , но не полноÑÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð¾ÑноÑениÑ. ÐгÑаниÑение на макÑималÑное колиÑеÑÑво ÑÑпеÑнÑÑ Ð¿Ð¾Ð¿ÑÑок замоÑозки ÑÑÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ ÑнизиÑÑ Ð¸Ð·Ð´ÐµÑжки обÑÑнÑÑ Ð¾Ð¿ÐµÑаÑий оÑиÑÑки и огÑаниÑиÑÑ Ð¿Ð¾ÑенÑиалÑнÑе недоÑÑаÑки беÑполезнÑÑ Ð¿Ð¾Ð¿ÑÑок неÑеÑпеливой замоÑозки ÑÑÑаниÑ, коÑоÑÑе повÑоÑно изменÑÑÑÑÑ Ð´Ð¾ ÑледÑÑÑей агÑеÑÑивной оÑиÑÑки.
ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа. Ðднако его можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑаблиÑ, изменив ÑооÑвеÑÑÑвÑÑÑий паÑамеÑÑ Ñ ÑанениÑ. Ðа подÑобноÑÑÑми о наÑÑÑойке Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼Ð¾Ñозки оÑиÑÑки обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 23.1.5.vacuum_update_datfrozenxid_only_when_needed(boolean) #Ðоле
datfrozenxidобÑÑно обновлÑеÑÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¸Ð»Ð¸ поÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑVACUUMпÑи поÑледоваÑелÑном ÑканиÑовании ÑаблиÑÑpg_class. ÐÑоÑеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ð¸ÑÑÑ Ð´Ð¾Ð»Ð³Ð¾, еÑли оÑиÑаеÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ ÑаблиÑ. ÐÑли Ð´Ð»Ñ Ð¿ÐµÑеменнойvacuum_update_datfrozenxid_only_when_neededÑÑÑановлено знаÑениеon, полеdatfrozenxidÐ´Ð»Ñ ÑаблиÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑеÑÑÑ Ð¿Ñи поÑледоваÑелÑном ÑканиÑовании ÑолÑко в Ñом ÑлÑÑае, еÑли она дейÑÑвиÑелÑно обновлÑлаÑÑ. Ð ÑезÑлÑÑаÑе Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно повÑÑиÑÑÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð¿Ñи оÑиÑÑке болÑÑого колиÑеÑÑва ÑаблиÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âoff.