VACUUM
VACUUM â пÑовеÑÑи ÑбоÑÐºÑ Ð¼ÑÑоÑа и, возможно, пÑоанализиÑоваÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
СинÑакÑиÑ
VACUUM [ (паÑамеÑÑ[, ...] ) ] [ÑаблиÑа_и_ÑÑолбÑÑ[, ...] ] VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ÑаблиÑа_и_ÑÑолбÑÑ[, ...] ] ÐдеÑÑ Ð´Ð¾Ð¿ÑÑкаеÑÑÑпаÑамеÑÑ: FULL [boolean] FREEZE [boolean] VERBOSE [boolean] ANALYZE [boolean] DISABLE_PAGE_SKIPPING [boolean] SKIP_LOCKED [boolean] INDEX_CLEANUP { AUTO | ON | OFF } PROCESS_TOAST [boolean] TRUNCATE [boolean] PARALLELintegerиÑаблиÑа_и_ÑÑолбÑÑ:имÑ_ÑаблиÑÑ[ (имÑ_ÑÑолбÑа[, ...] ) ]
ÐпиÑание
VACUUM вÑÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¿ÑоÑÑÑанÑÑво, занимаемое «мÑÑÑвÑми» коÑÑежами. ÐÑи обÑÑнÑÑ
опеÑаÑиÑÑ
Postgres Pro коÑÑежи, ÑдалÑннÑе или ÑÑÑаÑевÑие в ÑезÑлÑÑаÑе обновлениÑ, ÑизиÑеÑки не ÑдалÑÑÑÑÑ Ð¸Ð· ÑаблиÑÑ; они ÑоÑ
ÑанÑÑÑÑÑ Ð² ней, пока не бÑÐ´ÐµÑ Ð²Ñполнена команда VACUUM. Таким обÑазом, пеÑиодиÑеÑки необÑ
одимо вÑполнÑÑÑ VACUUM, оÑобенно Ð´Ð»Ñ ÑаÑÑо изменÑемÑÑ
ÑаблиÑ.
Ðез ÑпиÑка ÑаблиÑа_и_ÑÑолбÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° VACUUM обÑабаÑÑÐ²Ð°ÐµÑ Ð²Ñе ÑаблиÑÑ Ð¸ маÑеÑиализованнÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² ÑекÑÑей базе даннÑÑ
, на оÑиÑÑÐºÑ ÐºÐ¾ÑоÑÑÑ
ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ð¸Ð¼ÐµÐµÑ Ð¿Ñаво. С ÑÑим ÑпиÑком VACUUM обÑабаÑÑÐ²Ð°ÐµÑ ÑолÑко ÑказаннÑÑ ÑаблиÑÑ(Ñ).
VACUUM ANALYZE вÑполнÑÐµÑ Ð¾ÑиÑÑÐºÑ (VACUUM), а заÑем анализ (ANALYZE) вÑеÑ
ÑказаннÑÑ
ÑаблиÑ. ÐÑо ÑÐ´Ð¾Ð±Ð½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð´Ð»Ñ ÑегÑлÑÑного обÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ ÐÐ. Ðа дополниÑелÑной инÑоÑмаÑией об анализе обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ ANALYZE.
ÐÑоÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° VACUUM (без FULL) ÑолÑко вÑÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¿ÑоÑÑÑанÑÑво и Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾ доÑÑÑпнÑм Ð´Ð»Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑзованиÑ. ÐÑа ÑоÑма ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ Ð¿Ð°ÑаллелÑно Ñ Ð¾Ð±ÑÑнÑми опеÑаÑиÑми ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи ÑаблиÑÑ, Ñак как она не ÑÑебÑÐµÑ Ð¸ÑклÑÑиÑелÑной блокиÑовки. Ðднако оÑвобождÑнное меÑÑо не возвÑаÑаеÑÑÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑеме (в болÑÑинÑÑве ÑлÑÑаев); оно пÑоÑÑо оÑÑаÑÑÑÑ Ð´Ð¾ÑÑÑпнÑм Ð´Ð»Ñ ÑазмеÑÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑÑой же ÑаблиÑÑ. Ðна Ñакже позволÑÐµÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки неÑколÑко пÑоÑеÑÑоÑов. ÐÑÐ¾Ñ Ñежим назÑваеÑÑÑ Ð¿Ð°ÑаллелÑной оÑиÑÑкой. ÐÐ»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ ÑÑого Ñежима можно воÑполÑзоваÑÑÑÑ Ñказанием PARALLEL и задаÑÑ Ð½Ñлевое колиÑеÑÑво паÑаллелÑнÑÑ
ÑабоÑиÑ
пÑоÑеÑÑов. 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пÑопÑÑÐºÐ°ÐµÑ ÑÑÑаниÑÑ, ÑÑиÑÑÐ²Ð°Ñ ÐºÐ°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи. СÑÑаниÑÑ, на коÑоÑÑÑ , ÑÑÐ´Ñ Ð¿Ð¾ каÑÑе, вÑе коÑÑежи замоÑоженÑ, можно пÑопÑÑкаÑÑ Ð²Ñегда, а ÑÑÑаниÑÑ, в коÑоÑÑÑ Ð²Ñе коÑÑежи Ð²Ð¸Ð´Ð½Ñ Ð²Ñем ÑÑанзакÑиÑм, могÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ ÑолÑко пÑи агÑеÑÑивной оÑиÑÑке. Ðолее Ñого, за иÑклÑÑением агÑеÑÑивной оÑиÑÑки, некоÑоÑÑе ÑÑÑаниÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пÑопÑÑкаÑÑ, ÑÑÐ¾Ð±Ñ Ð½Ðµ ждаÑÑ, пока дÑÑгие ÑеанÑÑ Ð·Ð°ÐºÐ¾Ð½ÑÐ°Ñ Ð¸Ñ Ð¸ÑполÑзоваÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑклÑÑÐ°ÐµÑ Ð¿ÑопÑÑк ÑÑÑÐ°Ð½Ð¸Ñ Ð¸ пÑедназнаÑен Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко когда ÑелоÑÑноÑÑÑ ÐºÐ°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи вÑзÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð·ÑениÑ, ÑÑо возможно пÑи аппаÑаÑнÑÑ Ð¸Ð»Ð¸ пÑогÑаммнÑÑ ÑбоÑÑ , пÑиводÑÑÐ¸Ñ Ðº ÑазÑÑÑÐµÐ½Ð¸Ñ ÐÐ.SKIP_LOCKEDУказÑваеÑ, ÑÑо команда
VACUUMне должна ждаÑÑ Ð¾ÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ ÐºÐ¾Ð½ÑликÑÑÑÑÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок, наÑÐ¸Ð½Ð°Ñ Ð¾Ð±ÑабоÑÐºÑ Ð¾ÑноÑениÑ: еÑли оÑноÑение не ÑдаÑÑÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ ÑÑазÑ, без ожиданиÑ, оно пÑопÑÑкаеÑÑÑ. ÐамеÑÑÑе, ÑÑо даже Ñ ÑÑим ÑказаниемVACUUMÐ¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑÑÑ, оÑкÑÑÐ²Ð°Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¾ÑноÑениÑ. ÐÑоме Ñого,VACUUM ANALYZEÐ¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑÑÑ Ð¸ пÑи полÑÑении вÑбоÑки ÑÑÑок из ÑекÑий, поÑомков в иеÑаÑÑ Ð¸Ð¸ наÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ некоÑоÑÑÑ Ð²Ð¸Ð´Ð¾Ð² ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑаблиÑ. УÑÑиÑе Ñакже, ÑÑо пÑи налиÑии конÑликÑÑÑÑей блокиÑовки в ÑекÑиониÑованной ÑаблиÑе командаVACUUMÑ ÑÑим Ñказанием пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе ÐµÑ ÑекÑии, Ñогда как обÑÑно вÑе они обÑабаÑÑваÑÑÑÑ.INDEX_CLEANUPÐбÑÑно
VACUUMпÑопÑÑÐºÐ°ÐµÑ Ð¾ÑиÑÑÐºÑ Ð¸Ð½Ð´ÐµÐºÑа, когда в ÑаблиÑе имееÑÑÑ Ð²Ñего неÑколÑко мÑÑÑвÑÑ ÐºÐ¾ÑÑежей. РподобнÑÑ ÑиÑÑаÑиÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки вÑÐµÑ Ð¸Ð½Ð´ÐµÐºÑов ÑаблиÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно пÑевÑÑаÑÑ Ð²ÑÐ³Ð¾Ð´Ñ Ð¾Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· индекÑа мÑÑÑвÑÑ ÐºÐ¾ÑÑежей. Ðанное Ñказание можно иÑполÑзоваÑÑ, ÑÑÐ¾Ð±Ñ Ð² Ñ Ð¾Ð´ÐµVACUUMиндекÑÑ Ð¾Ð±ÑабаÑÑвалиÑÑ Ð¿ÑинÑдиÑелÑно пÑи лÑбом ненÑлевом колиÑеÑÑве мÑÑÑвÑÑ ÐºÐ¾ÑÑежей. Со знаÑениемAUTO(дейÑÑвÑÑÑим по ÑмолÑаниÑ)VACUUMÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑопÑÑкаÑÑ Ð¾ÑиÑÑÐºÑ Ð¸Ð½Ð´ÐµÐºÑов, когда она видиÑÑÑ Ð½ÐµÑелеÑообÑазной. ÐÑли длÑINDEX_CLEANUPзадано знаÑениеON,VACUUMбÑÐ´ÐµÑ Ð±ÐµÐ·ÑÑловно ÑдалÑÑÑ Ð²Ñе мÑÑÑвÑе коÑÑежи из индекÑов. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи Ñ Ð¿ÑедÑдÑÑими веÑÑиÑми PostgreSQL, где Ñакое поведение бÑло ÑÑандаÑÑнÑм.ÐÐ»Ñ ÑказаниÑ
INDEX_CLEANUPможно Ñакже задаÑÑ Ð·Ð½Ð°ÑениеOFF, ÑÑÐ¾Ð±Ñ Ð² Ñ Ð¾Ð´ÐµVACUUMвÑегда пÑопÑÑкалаÑÑ Ð¾ÑиÑÑка индекÑов, даже пÑи налиÑии в ÑаблиÑе множеÑÑва мÑÑÑвÑÑ ÐºÐ¾ÑÑежей. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, когда нÑжно вÑполниÑÑ Ð¾ÑиÑÑÐºÑ ÐºÐ°Ðº можно бÑÑÑÑее Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð½Ð°Ð´Ð²Ð¸Ð³Ð°ÑÑейÑÑ ÑгÑÐ¾Ð·Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий (Ñм. ÐодÑаздел 23.1.5). Ðднако пÑедпоÑÑиÑелÑнее положиÑÑÑÑ Ð½Ð° Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ заÑиÑÑ Ð¾Ñ Ñакого заÑикливаниÑ, ÑпÑавлÑемÑй паÑамеÑÑом vacuum_failsafe_age, коÑоÑÑй обÑÑно ÑÑабаÑÑÐ²Ð°ÐµÑ Ð°Ð²ÑомаÑиÑеÑки. ÐÑли оÑиÑÑка индекÑа не пÑоизводиÑÑÑ ÑегÑлÑÑно, пÑоизводиÑелÑноÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑÑ ÑдÑаÑÑÑÑ, Ñак как по меÑе внеÑÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в ÑаблиÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð±ÑдÑÑ Ð½Ð°ÐºÐ°Ð¿Ð»Ð¸Ð²Ð°ÑÑ Ð¼ÑÑÑвÑе коÑÑежи, а Ñама ÑаблиÑа бÑÐ´ÐµÑ Ð½Ð°ÐºÐ°Ð¿Ð»Ð¸Ð²Ð°ÑÑ Ð¼ÑÑÑвÑе ÑказаÑели, коÑоÑÑе могÑÑ Ð±ÑÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ ÑолÑко поÑле оÑиÑÑки индекÑа.ÐÑо Ñказание не дейÑÑвÑÐµÑ Ð½Ð° ÑаблиÑÑ, в коÑоÑÑÑ Ð½ÐµÑ Ð¸Ð½Ð´ÐµÐºÑов, и игноÑиÑÑеÑÑÑ Ð² ÑлÑÑае иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑказаниÑ
FULL. Также оно не влиÑÐµÑ Ð½Ð° ÑабоÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° заÑиÑÑ Ð¾Ñ Ð·Ð°ÑÐ¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов ÑÑанзакÑий. Ðогда он вклÑÑаеÑÑÑ, оÑиÑÑка индекÑов пÑопÑÑкаеÑÑÑ, даже еÑли длÑINDEX_CLEANUPзадано знаÑениеON.PROCESS_TOASTУказÑваеÑ, ÑÑо команда
VACUUMдолжна попÑÑаÑÑÑÑ Ð¾Ð±ÑабоÑаÑÑ ÑооÑвеÑÑÑвÑÑÑÑÑTOAST-ÑаблиÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ оÑноÑениÑ, еÑли ÑÐ°ÐºÐ¾Ð²Ð°Ñ ÑÑÑеÑÑвÑеÑ. ÐбÑÑно ÑÑо желаÑелÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ она вÑполнÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑклÑÑаÑÑ ÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, еÑли ÑÑебÑеÑÑÑ Ð¿ÑовеÑÑи оÑиÑÑÐºÑ ÑолÑко оÑновного оÑноÑениÑ. ÐÑо Ñказание игноÑиÑÑеÑÑÑ Ð² ÑлÑÑае иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑказаниÑFULL.TRUNCATEУказÑваеÑ, ÑÑо команда
VACUUMдолжна попÑÑаÑÑÑÑ Ð¾Ð±ÑезаÑÑ Ð¿ÑÑÑÑе ÑÑÑаниÑÑ Ð² конÑе ÑаблиÑÑ, ÑÑÐ¾Ð±Ñ Ð¾ÑвободивÑееÑÑ Ð¼ÐµÑÑо бÑло возвÑаÑено опеÑаÑионной ÑиÑÑеме. ÐбÑÑно ÑÑо желаÑелÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ она вÑполнÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ, еÑли ÑолÑко Ð´Ð»Ñ ÑаблиÑÑ, подлежаÑей оÑиÑÑке, не ÑбÑоÑен паÑамеÑÑvacuum_truncate. ÐÑклÑÑаÑÑ ÑÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкиACCESS EXCLUSIVEÐ´Ð»Ñ ÑаблиÑÑ, подлежаÑей оÑиÑÑке. ÐÑо Ñказание игноÑиÑÑеÑÑÑ Ð² ÑлÑÑае иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑказаниÑFULL.PARALLELУпÑавлÑÐµÑ ÑÑапами оÑиÑÑки и ÑбоÑки индекÑов в Ñ Ð¾Ð´Ðµ паÑаллелÑного вÑполнениÑ
VACUUM, опÑеделÑÑÑелое_ÑиÑлоÑоновÑÑ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов (более подÑобно каждÑй ÑÑап оÑиÑÑки опиÑан в ТаблиÑе 26.41). ЧиÑло ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑов, иÑполÑзÑемÑÑ Ð´Ð»Ñ ÑÑой опеÑаÑии, ÑавнÑеÑÑÑ ÑиÑÐ»Ñ Ð¸Ð½Ð´ÐµÐºÑов в оÑноÑении, Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑаллелÑной оÑиÑÑки, и Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð³ÑаниÑиваÑÑÑÑ ÑвеÑÑ Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑвом, заданнÑм ÑказаниемPARALLEL, а Ñакже дополниÑелÑно огÑаниÑиваеÑÑÑ Ð¿Ð°ÑамеÑÑом max_parallel_maintenance_workers. ÐÐ½Ð´ÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ Ð² Ñежиме паÑаллелÑной оÑиÑÑки Ñогда и ÑолÑко Ñогда, когда его ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑевÑÑÐ°ÐµÑ min_parallel_index_scan_size. ÐамеÑÑÑе, ÑÑо пÑи ÑÑом не гаÑанÑиÑÑеÑÑÑ, ÑÑо во вÑÐµÐ¼Ñ Ð¾ÑиÑÑки бÑÐ´ÐµÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑÑÑ ÑÑолÑко паÑаллелÑнÑÑ Ð¸ÑполниÑелей, ÑколÑко задаÑÑ Ð¿Ð°ÑамеÑÑÑелое_ÑиÑло. Ð Ñ Ð¾Ð´Ðµ оÑиÑÑки ÑабоÑие пÑоÑеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² менÑÑем колиÑеÑÑве или не иÑполÑзоваÑÑÑÑ Ð²Ð¾Ð²Ñе. ÐÐ»Ñ Ð¾Ð±ÑабоÑки одного индекÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован ÑолÑко один ÑабоÑий пÑоÑеÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¿Ð°ÑаллелÑнÑе иÑполниÑели бÑдÑÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ, ÑолÑко еÑли в ÑаблиÑе еÑÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ñм2индекÑа. РабоÑие пÑоÑеÑÑÑ Ð¾ÑиÑÑки запÑÑкаÑÑÑÑ Ð¿ÐµÑед наÑалом каждого ÑÑапа и завеÑÑаÑÑÑÑ Ð¿Ð¾Ñле его оконÑаниÑ. РбÑдÑÑÐ¸Ñ Ð²ÑпÑÑÐºÐ°Ñ ÑÑо поведение Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ. Ð ÑежимеFULLÑÑо Ñказание не поддеÑживаеÑÑÑ.booleanÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñй паÑамеÑÑ. ÐÐ»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа можно напиÑаÑÑ
TRUE,ONили1, а Ð´Ð»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ âFALSE,OFFили0. ÐнаÑениеbooleanможно опÑÑÑиÑÑ, в ÑÑом ÑлÑÑае подÑазÑмеваеÑÑÑTRUE.integerÐадаÑÑ Ð½ÐµÐ¾ÑÑиÑаÑелÑное Ñелое знаÑение, пеÑедаваемое вÑбÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð¿Ð°ÑамеÑÑÑ.
имÑ_ÑаблиÑÑÐÐ¼Ñ (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹) опÑеделÑнной ÑаблиÑÑ Ð¸Ð»Ð¸ маÑеÑиализованного пÑедÑÑавлениÑ, подлежаÑего оÑиÑÑке. ÐÑли ÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÑаблиÑа ÑвлÑеÑÑÑ ÑекÑиониÑованной, оÑиÑÑке подвеÑгаÑÑÑÑ Ð²Ñе ÐµÑ ÐºÐ¾Ð½ÐµÑнÑе ÑекÑии.
имÑ_ÑÑолбÑаÐÐ¼Ñ ÑÑолбÑа, подлежаÑего анализÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÑÑÑÑÑ Ð²Ñе ÑÑолбÑÑ. ÐÑли ÑказÑваеÑÑÑ ÑпиÑок ÑÑолбÑов, Ñакже должно пÑиÑÑÑÑÑвоваÑÑ Ñказание
ANALYZE.
ÐÑÐ²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ
С Ñказанием VERBOSE команда VACUUM вÑдаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑоÑеÑÑе оÑиÑÑки, оÑмеÑÐ°Ñ ÑекÑÑÑÑ Ð¾Ð±ÑабаÑÑваемÑÑ ÑаблиÑÑ. Также она вÑÐ²Ð¾Ð´Ð¸Ñ ÑазлиÑнÑе ÑÑаÑиÑÑиÑеÑкие ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑаблиÑаÑ
.
ÐÑимеÑаниÑ
ЧÑÐ¾Ð±Ñ Ð¾ÑиÑÑиÑÑ ÑаблиÑÑ, обÑÑно нÑжно бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем ÑÑой ÑаблиÑÑ Ð¸Ð»Ð¸ ÑÑпеÑполÑзоваÑелем. Ðднако владелÑÑам баз даннÑÑ
Ñакже ÑазÑеÑено ÑжимаÑÑ Ð²Ñе ÑаблиÑÑ Ð² ÑвоиÑ
базаÑ
, за иÑклÑÑением обÑиÑ
каÑалогов. (ÐгÑаниÑение в оÑноÑении обÑиÑ
каÑалогов ознаÑаеÑ, ÑÑо наÑÑоÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ VACUUM Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполниÑÑ ÑолÑко ÑÑпеÑполÑзоваÑелÑ.) VACUUM пÑи обÑабоÑке пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе ÑаблиÑÑ, на оÑиÑÑÐºÑ ÐºÐ¾ÑоÑÑÑ
ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ñав.
VACUUM нелÑÐ·Ñ Ð²ÑполнÑÑÑ Ð²Ð½ÑÑÑи блока ÑÑанзакÑии.
ÐÐ»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑами GIN, VACUUM (в лÑбой ÑоÑме) Ñакже завеÑÑÐ°ÐµÑ Ð²Ñе ожидаÑÑие опеÑаÑии Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² индекÑ, пеÑемеÑÐ°Ñ Ð·Ð°Ð¿Ð¸Ñи индекÑа из оÑеÑеди в ÑооÑвеÑÑÑвÑÑÑие меÑÑа в оÑновной ÑÑÑÑкÑÑÑе индекÑа GIN. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 67.4.1.
ÐÑ ÑекомендÑем пÑоводиÑÑ Ð¾ÑиÑÑÐºÑ Ð²ÑÐµÑ Ð±Ð°Ð· даннÑÑ Ð½Ð° поÑÑоÑнной оÑнове, ÑÑÐ¾Ð±Ñ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ð»Ð¾ Ñдаление мÑÑÑвÑÑ ÑÑÑок. Postgres Pro вклÑÑÐ°ÐµÑ ÑÑедÑÑво «авÑооÑиÑÑки», коÑоÑое позволÑÐµÑ Ð°Ð²ÑомаÑизиÑоваÑÑ ÑегÑлÑÑнÑÑ Ð¾ÑиÑÑкÑ. ЧÑÐ¾Ð±Ñ ÑзнаÑÑ Ð±Ð¾Ð»ÑÑе об авÑомаÑиÑеÑкой и ÑÑÑной оÑиÑÑке, обÑаÑиÑеÑÑ Ðº РазделÑ 23.1.
Режим FULL не ÑекомендÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑÑного пÑименениÑ, но в некоÑоÑÑÑ
ÑлÑÑаÑÑ
он бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½. ÐапÑимеÑ, когда бÑли ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ð¾ÑÑи вÑе ÑÑÑоки ÑаблиÑÑ, Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ Ð¶ÐµÐ»Ð°Ð½Ð¸Ðµ ÑизиÑеÑки ÑжаÑÑ ÐµÑ, ÑÑÐ¾Ð±Ñ Ð¾ÑвободиÑÑ Ð¼ÐµÑÑо на диÑке и ÑÑкоÑиÑÑ ÑканиÑование ÑÑой ÑаблиÑÑ. ЧаÑе вÑего VACUUM FULL ÑÐ¶Ð¸Ð¼Ð°ÐµÑ ÑаблиÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑÑекÑивно, Ñем обÑÑнÑй VACUUM.
Режим PARALLEL иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¾ÑиÑÑки. ÐÑли ÑÑо Ñказание задаÑÑÑÑ Ð²Ð¼ÐµÑÑе Ñ ANALYZE, на ÑабоÑÑ ANALYZE оно не влиÑеÑ.
VACUUM ÑоздаÑÑ Ð·Ð½Ð°ÑиÑелÑнÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÑ Ð½Ð° подÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑиÑаÑелÑно ÑказаÑÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑи дÑÑгиÑ
акÑивнÑÑ
ÑеанÑов. ÐоÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° полезно иÑполÑзоваÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð·Ð°Ð´ÐµÑжки оÑиÑÑки Ñ ÑÑÑÑом ÐµÑ ÑÑоимоÑÑи. ÐÑи паÑаллелÑной оÑиÑÑке каждÑй ÑабоÑий пÑоÑеÑÑ Ð¿ÑиоÑÑанавливаеÑÑÑ Ð½Ð° вÑемÑ, пÑопоÑÑионалÑное обÑÑÐ¼Ñ Ð¿ÑоизведÑнной им ÑабоÑÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 18.4.4.
ÐаждÑй пÑоÑеÑÑ, вÑполнÑÑÑий опеÑаÑÐ¸Ñ VACUUM без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ FULL бÑÐ´ÐµÑ Ð²ÑдаваÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñ
оде ÐµÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð² пÑедÑÑавлении pg_stat_progress_vacuum. ÐÑоÑеÑÑÑ Ð¶Ðµ, вÑполнÑÑÑие VACUUM FULL, бÑдÑÑ Ð²ÑдаваÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð² пÑедÑÑавлении pg_stat_progress_cluster. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 26.4.3 и ÐодÑазделÑ 26.4.4.
ÐÑимеÑÑ
ÐÑиÑÑка одной ÑаблиÑÑ onek, пÑоведение ÐµÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑоÑа и пеÑаÑÑ Ð¿Ð¾Ð´Ñобного оÑÑÑÑа о дейÑÑвиÑÑ
опеÑаÑии оÑиÑÑки:
VACUUM (VERBOSE, ANALYZE) onek;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ VACUUM оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.