VACUUM
VACUUM â пÑовеÑÑи ÑбоÑÐºÑ Ð¼ÑÑоÑа и, возможно, пÑоанализиÑоваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
СинÑакÑиÑ
VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE | DISABLE_PAGE_SKIPPING } [, ...] ) ] [ имÑ_ÑаблиÑÑ [ (имÑ_ÑÑолбÑа [, ...] ) ] ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ имÑ_ÑаблиÑÑ ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ имÑ_ÑаблиÑÑ [ (имÑ_ÑÑолбÑа [, ...] ) ] ]ÐпиÑание
VACUUM вÑÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¿ÑоÑÑÑанÑÑво, занимаемое «мÑÑÑвÑми» коÑÑежами. ÐÑи обÑÑнÑÑ
опеÑаÑиÑÑ
Postgres Pro коÑÑежи, ÑдалÑннÑе или ÑÑÑаÑевÑие в ÑезÑлÑÑаÑе обновлениÑ, ÑизиÑеÑки не ÑдалÑÑÑÑÑ Ð¸Ð· ÑаблиÑÑ; они ÑоÑ
ÑанÑÑÑÑÑ Ð² ней, пока не бÑÐ´ÐµÑ Ð²Ñполнена команда VACUUM. Таким обÑазом, пеÑиодиÑеÑки необÑ
одимо вÑполнÑÑÑ VACUUM, оÑобенно Ð´Ð»Ñ ÑаÑÑо изменÑемÑÑ
ÑаблиÑ.
Ðез паÑамеÑÑа команда VACUUM обÑабаÑÑÐ²Ð°ÐµÑ Ð²Ñе ÑаблиÑÑ Ð² ÑекÑÑей базе даннÑÑ
, коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑиÑÑиÑÑ ÑекÑÑий полÑзоваÑелÑ. ÐÑли в паÑамеÑÑе пеÑедаÑÑÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ, VACUUM обÑабаÑÑÐ²Ð°ÐµÑ ÑолÑко ÑÑÑ ÑаблиÑÑ.
VACUUM ANALYZE вÑполнÑÐµÑ Ð¾ÑиÑÑÐºÑ (VACUUM), а заÑем анализ (ANALYZE) вÑеÑ
ÑказаннÑÑ
ÑаблиÑ. ÐÑо ÑÐ´Ð¾Ð±Ð½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð´Ð»Ñ ÑегÑлÑÑного обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐÐ. Ðа дополниÑелÑной инÑоÑмаÑией об анализе обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ ANALYZE.
ÐÑоÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° VACUUM (без FULL) ÑолÑко вÑÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¿ÑоÑÑÑанÑÑво и Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾ доÑÑÑпнÑм Ð´Ð»Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑзованиÑ. ÐÑа ÑоÑма ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ Ð¿Ð°ÑаллелÑно Ñ Ð¾Ð±ÑÑнÑми опеÑаÑиÑми ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи ÑаблиÑÑ, Ñак она не ÑÑебÑÐµÑ Ð¸ÑклÑÑиÑелÑной блокиÑовки. Ðднако оÑвобождÑнное меÑÑо не возвÑаÑаеÑÑÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑеме (в болÑÑинÑÑве ÑлÑÑаев); оно пÑоÑÑо оÑÑаÑÑÑÑ Ð´Ð¾ÑÑÑпнÑм Ð´Ð»Ñ ÑазмеÑÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑÑой же ÑаблиÑÑ. VACUUM FULL пеÑепиÑÑÐ²Ð°ÐµÑ Ð²ÑÑ ÑодеÑжимое ÑаблиÑÑ Ð² новÑй Ñайл на диÑке, не ÑодеÑжаÑий ниÑего лиÑнего, ÑÑо позволÑÐµÑ Ð²Ð¾Ð·Ð²ÑаÑиÑÑ Ð½ÐµÐ¸ÑполÑзованное пÑоÑÑÑанÑÑво опеÑаÑионной ÑиÑÑеме. ÐÑа ÑоÑма ÑабоÑÐ°ÐµÑ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ медленнее и запÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ACCESS EXCLUSIVE Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ обÑабаÑÑваемой ÑаблиÑÑ.
Ðогда ÑпиÑок паÑамеÑÑов заклÑÑаеÑÑÑ Ð² Ñкобки, паÑамеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÐ°Ð½Ñ Ð² лÑбом поÑÑдке. Ðез Ñкобок паÑамеÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑказÑваÑÑÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ в Ñом поÑÑдке, коÑоÑÑй показан вÑÑе. СинÑакÑÐ¸Ñ Ñо Ñкобками поÑвилÑÑ Ð² PostgreSQL 9.0; ваÑÐ¸Ð°Ð½Ñ Ð·Ð°Ð¿Ð¸Ñи без Ñкобок ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим.
ÐаÑамеÑÑÑ
FULLÐÑбиÑÐ°ÐµÑ Ñежим «полной» оÑиÑÑки, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑвободиÑÑ Ð±Ð¾Ð»ÑÑе пÑоÑÑÑанÑÑва, но вÑполнÑеÑÑÑ Ð³Ð¾Ñаздо долÑÑе и запÑаÑÐ¸Ð²Ð°ÐµÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ÑаблиÑÑ. ÐÑÐ¾Ñ Ñежим Ñакже ÑÑебÑÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑное меÑÑо на диÑке, Ñак как он запиÑÑÐ²Ð°ÐµÑ Ð½Ð¾Ð²ÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÑаблиÑÑ Ð¸ не оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ ÑÑаÑÑÑ Ð´Ð¾ завеÑÑÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑии. ÐбÑÑно ÑÑо ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ, ÑолÑко когда ÑÑебÑеÑÑÑ Ð²ÑÑвободиÑÑ Ð·Ð½Ð°ÑиÑелÑнÑй обÑÑм пÑоÑÑÑанÑÑва, вÑделенного ÑаблиÑе.
FREEZEÐÑбиÑÐ°ÐµÑ Ð°Ð³ÑеÑÑивнÑÑ Â«Ð·Ð°Ð¼Ð¾ÑозкÑ» коÑÑежей. Ðобавление ÑказаниÑ
FREEZEÑавноÑилÑно вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑVACUUMÑ Ð¿Ð°ÑамеÑÑами vacuum_freeze_min_age и vacuum_freeze_table_age, ÑавнÑми нÑлÑ. ÐгÑеÑÑÐ¸Ð²Ð½Ð°Ñ Ð·Ð°Ð¼Ð¾Ñозка вÑегда вÑполнÑеÑÑÑ Ð¿Ñи пеÑезапиÑи ÑаблиÑÑ, поÑÑÐ¾Ð¼Ñ Ð² ÑежимеFULLÑÑо Ñказание избÑÑоÑно.VERBOSEÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð´ÑобнÑй оÑÑÑÑ Ð¾Ð± оÑиÑÑке Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑаблиÑÑ.
ANALYZEÐбновлÑÐµÑ ÑÑаÑиÑÑикÑ, коÑоÑÑÑ Ð¸ÑполÑзÑÐµÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик Ð´Ð»Ñ Ð²ÑбоÑа наиболее ÑÑÑекÑивного ÑпоÑоба вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа.
DISABLE_PAGE_SKIPPINGÐбÑÑно
VACUUMпÑопÑÑÐºÐ°ÐµÑ ÑÑÑаниÑÑ, ÑÑиÑÑÐ²Ð°Ñ ÐºÐ°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи. СÑÑаниÑÑ, на коÑоÑÑÑ , ÑÑÐ´Ñ Ð¿Ð¾ каÑÑе, вÑе коÑÑежи замоÑоженÑ, можно пÑопÑÑкаÑÑ Ð²Ñегда, а ÑÑÑаниÑÑ, в коÑоÑÑÑ Ð²Ñе коÑÑежи Ð²Ð¸Ð´Ð½Ñ Ð²Ñем ÑÑанзакÑиÑм, могÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ ÑолÑко пÑи агÑеÑÑивной оÑиÑÑке. Ðолее Ñого, за иÑклÑÑением агÑеÑÑивной оÑиÑÑки, некоÑоÑÑе ÑÑÑаниÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пÑопÑÑкаÑÑ, ÑÑÐ¾Ð±Ñ Ð½Ðµ ждаÑÑ, пока дÑÑгие ÑеанÑÑ Ð·Ð°ÐºÐ¾Ð½ÑÐ°Ñ Ð¸Ñ Ð¸ÑполÑзоваÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑклÑÑÐ°ÐµÑ Ð¿ÑопÑÑк ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ ÑаÑÑÑиÑан Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко когда ÑелоÑÑноÑÑÑ ÐºÐ°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи вÑзÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð·ÑениÑ, ÑÑо возможно пÑи аппаÑаÑнÑÑ Ð¸Ð»Ð¸ пÑогÑаммнÑÑ ÑбоÑÑ , пÑиводÑÑÐ¸Ñ Ðº ÑазÑÑÑÐµÐ½Ð¸Ñ ÐÐ.имÑ_ÑаблиÑÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) опÑеделÑнной ÑаблиÑÑ, подлежаÑей оÑиÑÑке. ÐÑли оно оÑÑÑÑÑÑвÑеÑ, оÑиÑÑке подвеÑгаÑÑÑÑ Ð²Ñе обÑÑнÑе ÑаблиÑÑ Ð¸ маÑеÑиализованнÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² ÑекÑÑей базе даннÑÑ . ÐÑли ÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÑаблиÑа ÑвлÑеÑÑÑ ÑекÑиониÑованной, оÑиÑаÑÑÑÑ Ð±ÑдÑÑ Ð²Ñе ÐµÑ ÐºÐ¾Ð½ÐµÑнÑе ÑекÑии.
имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑолбÑа, подлежаÑего анализÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÑÑÑÑÑ Ð²Ñе ÑÑолбÑÑ. ÐÑли Ñказан ÑпиÑок ÑÑолбÑов, подÑазÑмеваеÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ
ANALYZE.
ÐÑÐ²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ
С Ñказанием VERBOSE команда VACUUM вÑдаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑоÑеÑÑе оÑиÑÑки, оÑмеÑÐ°Ñ ÑекÑÑÑÑ Ð¾Ð±ÑабаÑÑваемÑÑ ÑаблиÑÑ. Также она вÑÐ²Ð¾Ð´Ð¸Ñ ÑазлиÑнÑе ÑÑаÑиÑÑиÑеÑкие ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑаблиÑаÑ
.
ÐамеÑаниÑ
ЧÑÐ¾Ð±Ñ Ð¾ÑиÑÑиÑÑ ÑаблиÑÑ, обÑÑно нÑжно бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем ÑÑой ÑаблиÑÑ Ð¸Ð»Ð¸ ÑÑпеÑполÑзоваÑелем. Ðднако владелÑÑам баз даннÑÑ
Ñакже ÑазÑеÑено ÑжимаÑÑ Ð²Ñе ÑаблиÑÑ Ð² ÑвоиÑ
базаÑ
, за иÑклÑÑением обÑиÑ
каÑалогов. (ÐгÑаниÑение в оÑноÑении обÑиÑ
каÑалогов ознаÑаеÑ, ÑÑо наÑÑоÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ VACUUM Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполниÑÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ.) VACUUM пÑи обÑабоÑке пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе ÑаблиÑÑ, на оÑиÑÑÐºÑ ÐºÐ¾ÑоÑÑÑ
ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ñав.
VACUUM нелÑÐ·Ñ Ð²ÑполнÑÑÑ Ð²Ð½ÑÑÑи блока ÑÑанзакÑии.
ÐÐ»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑами GIN, VACUUM (в лÑбой ÑоÑме) Ñакже завеÑÑÐ°ÐµÑ Ð²Ñе ожидаÑÑие опеÑаÑии Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² индекÑ, пеÑемеÑÐ°Ñ Ð·Ð°Ð¿Ð¸Ñи индекÑа из оÑеÑеди в ÑооÑвеÑÑÑвÑÑÑие меÑÑа в оÑновной ÑÑÑÑкÑÑÑе индекÑа GIN. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 60.4.1.
ÐÑ ÑекомендÑем оÑиÑаÑÑ Ð°ÐºÑивнÑе пÑоизводÑÑвеннÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
доÑÑаÑоÑно ÑаÑÑо (как минимÑм, каждÑÑ Ð½Ð¾ÑÑ), ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð¾Ñ Â«Ð¼ÑÑÑвÑÑ
» ÑÑÑок. ÐоÑле Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑого ÑиÑла ÑÑÑок Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñ
оÑоÑей идеей вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ VACUUM ANALYZE Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ заÑÑонÑÑой ÑаблиÑÑ. ÐÑи ÑÑом ÑезÑлÑÑаÑÑ Ð²ÑеÑ
поÑледниÑ
изменений бÑдÑÑ Ð¾ÑÑÐ°Ð¶ÐµÐ½Ñ Ð² ÑиÑÑемнÑÑ
каÑалогаÑ
, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑÐ¸ÐºÑ Ð·Ð°Ð¿ÑоÑов Postgres Pro пÑинимаÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑекÑивнÑе ÑеÑÐµÐ½Ð¸Ñ Ð¿Ñи планиÑовании.
Режим FULL не ÑекомендÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑÑного пÑименениÑ, но в некоÑоÑÑÑ
ÑлÑÑаÑÑ
он бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½. ÐапÑимеÑ, когда бÑли ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ð¾ÑÑи вÑе ÑÑÑоки ÑаблиÑÑ, Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ Ð¶ÐµÐ»Ð°Ð½Ð¸Ðµ ÑизиÑеÑки ÑжаÑÑ ÐµÑ, ÑÑÐ¾Ð±Ñ Ð¾ÑвободиÑÑ Ð¼ÐµÑÑо на диÑке и ÑÑкоÑиÑÑ ÑканиÑование ÑÑой ÑаблиÑÑ. ЧаÑе вÑего VACUUM FULL ÑÐ¶Ð¸Ð¼Ð°ÐµÑ ÑаблиÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑекÑивно, Ñем обÑÑнÑй VACUUM.
VACUUM ÑоздаÑÑ Ð·Ð½Ð°ÑиÑелÑнÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° подÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°/вÑвода, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑиÑаÑелÑно ÑказаÑÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑи дÑÑгиÑ
акÑивнÑÑ
ÑеанÑов. ÐоÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° полезно иÑполÑзоваÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð·Ð°Ð´ÐµÑжки оÑиÑÑки Ñ ÑÑÑÑом ÐµÑ ÑÑоимоÑÑи. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 18.4.4.
Postgres Pro вклÑÑÐ°ÐµÑ ÑÑедÑÑво «авÑооÑиÑÑки», коÑоÑое позволÑÐµÑ Ð°Ð²ÑомаÑизиÑоваÑÑ ÑегÑлÑÑнÑÑ Ð¾ÑиÑÑкÑ. ЧÑÐ¾Ð±Ñ ÑзнаÑÑ Ð±Ð¾Ð»ÑÑе об авÑомаÑиÑеÑкой и ÑÑÑной оÑиÑÑке, обÑаÑиÑеÑÑ Ðº РазделÑ 23.1.
ÐÑимеÑÑ
ÐÑиÑÑка одной ÑаблиÑÑ onek, пÑоведение ÐµÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑоÑа и пеÑаÑÑ Ð¿Ð¾Ð´Ñобного оÑÑÑÑа о дейÑÑвиÑÑ
опеÑаÑии оÑиÑÑки:
VACUUM (VERBOSE, ANALYZE) onek;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ VACUUM оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.