REINDEX
REINDEX â пеÑеÑÑÑоиÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ
СинÑакÑиÑ
REINDEX [ (паÑамеÑÑ[, ...] ) ] { INDEX | TABLE | SCHEMA } [ CONCURRENTLY ]имÑREINDEX [ (паÑамеÑÑ[, ...] ) ] { DATABASE | SYSTEM } [ CONCURRENTLY ] [имÑ] ÐдеÑÑ Ð´Ð¾Ð¿ÑÑкаеÑÑÑпаÑамеÑÑ: CONCURRENTLY [boolean] TABLESPACEновое_Ñабл_пÑоÑÑÑанÑÑвоVERBOSE [boolean]
ÐпиÑание
REINDEX пеÑеÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ, обÑабаÑÑÐ²Ð°Ñ Ð´Ð°Ð½Ð½Ñе ÑаблиÑÑ, к коÑоÑой оÑноÑиÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ, и в ÑезÑлÑÑаÑе заменÑÐµÑ ÑÑаÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа. Ðоманда REINDEX пÑименÑеÑÑÑ Ð² ÑледÑÑÑиÑ
ÑиÑÑаÑиÑÑ
:
ÐÐ½Ð´ÐµÐºÑ Ð±Ñл повÑеждÑн, его ÑодеÑжимое ÑÑало некоÑÑекÑнÑм. ХоÑÑ Ð² ÑеоÑии ÑÑого не должно ÑлÑÑаÑÑÑÑ, на пÑакÑике индекÑÑ Ð¼Ð¾Ð³ÑÑ Ð¸ÑпоÑÑиÑÑÑÑ Ð¸Ð·-за пÑогÑаммнÑÑ Ð¾Ñибок или аппаÑаÑнÑÑ Ñбоев. Ð ÑÐ°ÐºÐ¸Ñ ÑлÑÑаÑÑ
REINDEXÑлÑÐ¶Ð¸Ñ Ð¼ÐµÑодом воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа.ÐÐ½Ð´ÐµÐºÑ ÑÑал «ÑаздÑÑÑм», Ñо еÑÑÑ Ð² нÑм оказалоÑÑ Ð¼Ð½Ð¾Ð³Ð¾ пÑÑÑÑÑ Ð¸Ð»Ð¸ поÑÑи пÑÑÑÑÑ ÑÑÑаниÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ñ B-деÑевÑÑми в PostgreSQL пÑи опÑеделÑннÑÑ , доÑÑаÑоÑно ÑÐµÐ´ÐºÐ¸Ñ ÑÑенаÑиÑÑ Ð¸ÑполÑзованиÑ.
REINDEXдаÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑокÑаÑиÑÑ Ð¾Ð±ÑÑм, занимаемÑй индекÑом, запиÑÑÐ²Ð°Ñ Ð½Ð¾Ð²ÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑа без «мÑÑÑвÑÑ Â» ÑÑÑаниÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº РазделÑ 24.2.ÐаÑамеÑÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа (напÑимеÑ, ÑакÑÐ¾Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ) бÑл изменÑн, и ÑепеÑÑ ÑÑебÑеÑÑÑ, ÑÑÐ¾Ð±Ñ ÑÑо изменение вÑÑÑпило в ÑÐ¸Ð»Ñ Ð² полной меÑе.
ÐÑли поÑÑÑоиÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð² Ñежиме
CONCURRENTLYне ÑдаÑÑÑÑ, Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÑÑаÑÑÑÑ Ð² «неÑабоÑем» ÑоÑÑоÑнии. Такие индекÑÑ Ð±ÐµÑполезнÑ, но Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ легко пеÑеÑÑÑоиÑÑ, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹REINDEX. Ðднако замеÑÑÑе, ÑÑо пеÑеÑÑÑаиваÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð² неблокиÑÑÑÑем Ñежиме Ð¼Ð¾Ð¶ÐµÑ ÑолÑко командаREINDEX INDEX.
ÐаÑамеÑÑÑ
INDEXÐеÑеÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ ÑказаннÑй индекÑ. ÐÑÑ ÑоÑмÑ
REINDEXнелÑÐ·Ñ Ð²ÑполниÑÑ Ð² блоке ÑÑанзакÑии, еÑли Ð¸Ð½Ð´ÐµÐºÑ ÑвлÑеÑÑÑ ÑекÑиониÑованнÑм.TABLEÐеÑеÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð²Ñе индекÑÑ Ñказанной ÑаблиÑÑ. ÐÑли ÑаблиÑа Ð¸Ð¼ÐµÐµÑ Ð²ÑоÑиÑнÑÑ ÑаблиÑÑ Â«TOAST», она Ñакже бÑÐ´ÐµÑ Ð¿ÐµÑеиндекÑиÑована. ÐÑÑ ÑоÑмÑ
REINDEXнелÑÐ·Ñ Ð²ÑполниÑÑ Ð² блоке ÑÑанзакÑии, еÑли ÑаблиÑа ÑвлÑеÑÑÑ ÑекÑиониÑованной.SCHEMAÐеÑеÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð²Ñе индекÑÑ Ð² Ñказанной ÑÑ ÐµÐ¼Ðµ. ÐÑли ÑаблиÑа в ÑÑой ÑÑ ÐµÐ¼Ðµ Ð¸Ð¼ÐµÐµÑ Ð²ÑоÑиÑнÑÑ ÑаблиÑÑ Â«TOAST», она Ñакже бÑÐ´ÐµÑ Ð¿ÐµÑеиндекÑиÑована. ÐÑи ÑÑом обÑабаÑÑваÑÑÑÑ Ð¸ индекÑÑ Ð² обÑÐ¸Ñ ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ . ÐÑÑ ÑоÑмÑ
REINDEXнелÑÐ·Ñ Ð²ÑполниÑÑ Ð² блоке ÑÑанзакÑии.DATABASEÐеÑеÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð²Ñе индекÑÑ Ð² ÑекÑÑей базе даннÑÑ . ÐÑи ÑÑом индекÑÑ Ð² ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ Ð½Ðµ обÑабаÑÑваÑÑÑÑ. ÐÑÑ ÑоÑмÑ
REINDEXнелÑÐ·Ñ Ð²ÑполниÑÑ Ð² блоке ÑÑанзакÑии.SYSTEMÐеÑеÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð²Ñе индекÑÑ Ð² ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑи ÑÑом обÑабаÑÑваÑÑÑÑ Ñакже индекÑÑ Ð² обÑÐ¸Ñ ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ , но индекÑÑ Ð² ÑаблиÑÐ°Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ заÑÑагиваÑÑÑÑ. ÐÑÑ ÑоÑмÑ
REINDEXнелÑÐ·Ñ Ð²ÑполниÑÑ Ð² блоке ÑÑанзакÑии.имÑÐÐ¼Ñ Ð¾Ð¿ÑеделÑнного индекÑа, ÑаблиÑÑ Ð¸Ð»Ð¸ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , подлежаÑÐ¸Ñ Ð¿ÐµÑеиндекÑаÑии. РнаÑÑоÑÑее вÑемÑ
REINDEX DATABASEиREINDEX SYSTEMмогÑÑ Ð¿ÐµÑеиндекÑиÑоваÑÑ ÑолÑко ÑекÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , Ñак ÑÑо Ð¸Ñ Ð¿Ð°ÑамеÑÑ (необÑзаÑелÑнÑй) должен ÑооÑвеÑÑÑвоваÑÑ Ð¸Ð¼ÐµÐ½Ð¸ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .CONCURRENTLYС ÑÑим Ñказанием PostgreSQL пеÑеÑÑÑÐ¾Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑ, не ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок, коÑоÑÑе Ð±Ñ Ð¿ÑедоÑвÑаÑали добавление, изменение или Ñдаление запиÑей в ÑаблиÑе, Ñогда как по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа блокиÑÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ (но не ÑÑение) в ÑаблиÑе до Ñвоего завеÑÑениÑ. ÐÑи пеÑеиндекÑаÑии в неблокиÑÑÑÑем Ñежиме еÑÑÑ ÑÑд оÑобенноÑÑей, о коÑоÑÑÑ ÑледÑÐµÑ Ð·Ð½Ð°ÑÑ, â Ñм. ÐеблокиÑÑÑÑее пеÑеÑÑÑоение индекÑов ниже.
ÐÐ»Ñ Ð²ÑеменнÑÑ ÑаблиÑ
REINDEXвÑегда вÑполнÑеÑÑÑ Ð±Ð¾Ð»ÐµÐµ пÑоÑÑÑм, неблокиÑÑÑÑим ÑпоÑобом, Ñак как они не могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ð¼Ð¸ дÑÑгими ÑеанÑами.TABLESPACEÐадаÑÑ Ð½Ð¾Ð²Ð¾Ðµ ÑаблиÑное пÑоÑÑÑанÑÑво, в коÑоÑом бÑдÑÑ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ñ Ð¸Ð½Ð´ÐµÐºÑÑ.
VERBOSEÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¾ÑÑÑÑ Ð¾ пÑогÑеÑÑе поÑле пеÑеиндекÑаÑии каждого индекÑа на ÑÑовне
INFO.booleanÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñй паÑамеÑÑ. ÐÐ»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа можно напиÑаÑÑ
TRUE,ONили1, а Ð´Ð»Ñ Ð¾ÑклÑÑÐµÐ½Ð¸Ñ âFALSE,OFFили0. ÐнаÑениеbooleanможно опÑÑÑиÑÑ, в ÑÑом ÑлÑÑае подÑазÑмеваеÑÑÑTRUE.новое_Ñабл_пÑоÑÑÑанÑÑвоТаблиÑное пÑоÑÑÑанÑÑво, в коÑоÑом бÑдÑÑ Ð¿ÐµÑеÑÑÑаиваÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ.
ÐÑимеÑаниÑ
Ð ÑлÑÑае подозÑений в повÑеждении индекÑа ÑаблиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ вÑе индекÑÑ ÑаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑеÑÑÑоиÑÑ, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REINDEX INDEX или REINDEX TABLE.
ÐÑÑ ÑÑложнÑеÑÑÑ, еÑли Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ Ð²Ð¾ÑÑÑановиÑÑ Ð¿Ð¾Ð²ÑеждÑннÑй Ð¸Ð½Ð´ÐµÐºÑ ÑиÑÑемной ÑаблиÑÑ. Ð ÑÑом ÑлÑÑае важно, ÑÑÐ¾Ð±Ñ ÑиÑÑема Ñама не иÑполÑзовала ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ. (Ðа Ñамом деле в ÑакиÑ
ÑлÑÑаÑÑ
вÑ, ÑкоÑее вÑего, ÑÑолкнÑÑеÑÑ Ñ Ð¿Ð°Ð´ÐµÐ½Ð¸ÐµÐ¼ пÑоÑеÑÑов ÑеÑвеÑа в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð°Ð¿ÑÑка, как Ñаз вÑледÑÑвие иÑпоÑÑеннÑÑ
индекÑов.) ЧÑÐ¾Ð±Ñ Ð½Ð°Ð´Ñжно воÑÑÑановиÑÑ ÑабоÑее ÑоÑÑоÑние, ÑеÑÐ²ÐµÑ ÑледÑÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Ñ Ð¿Ð°ÑамеÑÑом -P, коÑоÑÑй оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование индекÑов пÑи поиÑке в ÑиÑÑемнÑÑ
каÑалогаÑ
.
Ðдин из ваÑианÑов ÑделаÑÑ ÑÑо â вÑклÑÑиÑÑ ÑеÑÐ²ÐµÑ PostgreSQL и запÑÑÑиÑÑ ÐµÐ³Ð¾ Ñнова в однополÑзоваÑелÑÑком Ñежиме, Ñ Ð¿Ð°ÑамеÑÑом -P в командной ÑÑÑоке. ÐаÑем можно вÑполниÑÑ REINDEX DATABASE, REINDEX SYSTEM, REINDEX TABLE или REINDEX INDEX, в завиÑимоÑÑи Ð¾Ñ Ñого, ÑÑо Ð²Ñ Ñ
оÑиÑе воÑÑÑановиÑÑ. Ð ÑлÑÑае Ñомнений вÑполниÑе REINDEX SYSTEM, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑеÑÑÑоиÑÑ Ð²Ñе ÑиÑÑемнÑе индекÑÑ Ð² базе даннÑÑ
. ÐаÑем завеÑÑиÑе однополÑзоваÑелÑÑкий ÑÐµÐ°Ð½Ñ ÑеÑвеÑа и пеÑезапÑÑÑиÑе ÑеÑÐ²ÐµÑ Ð² обÑÑном Ñежиме. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ñобнее ÑзнаÑÑ, как ÑабоÑаÑÑ Ñ ÑеÑвеÑом в однополÑзоваÑелÑÑком инÑеÑÑейÑе, обÑаÑиÑеÑÑ Ðº ÑпÑавоÑной ÑÑÑаниÑе postgres.
Ðожно Ñак же запÑÑÑиÑÑ Ð¾Ð±ÑÑнÑй ÑкземплÑÑ ÑеÑвеÑа, но добавиÑÑ Ð² паÑамеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки -P. Ð ÑазнÑÑ
клиенÑаÑ
ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð´ÐµÐ»Ð°ÑÑÑÑ Ð¿Ð¾-ÑазномÑ, но во вÑеÑ
клиенÑаÑ
на базе libpq можно ÑÑÑановиÑÑ Ð´Ð»Ñ Ð¿ÐµÑеменной окÑÑÐ¶ÐµÐ½Ð¸Ñ PGOPTIONS знаÑение -P до запÑÑка клиенÑа. УÑÑиÑе, ÑÑо Ñ
оÑÑ ÑÑÐ¾Ñ Ð¼ÐµÑод не пÑепÑÑÑÑвÑÐµÑ ÑабоÑе дÑÑгиÑ
клиенÑов, вÑÑ Ð¶Ðµ Ð¸Ð¼ÐµÐµÑ ÑмÑÑл не позволÑÑÑ Ð¸Ð¼ подклÑÑаÑÑÑÑ Ðº повÑеждÑнной базе даннÑÑ
до завеÑÑÐµÐ½Ð¸Ñ Ð²Ð¾ÑÑÑановлениÑ.
ÐейÑÑвие REINDEX подобно ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸ пеÑеÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа в Ñом ÑмÑÑле, ÑÑо ÑодеÑжимое индекÑа пеÑеÑоздаÑÑÑÑ Ñ Ð½ÑлÑ, но блокиÑовки пÑи ÑÑом ÑÑÑанавливаÑÑÑÑ Ð´ÑÑгие. REINDEX блокиÑÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, но не ÑÑение ÑодиÑелÑÑкой ÑаблиÑÑ Ð¸Ð½Ð´ÐµÐºÑа. Ð ÑаÑÑноÑÑи, планиÑовÑик пÑÑаеÑÑÑ ÑÑÑановиÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ACCESS SHARE Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ индекÑа ÑаблиÑÑ, незавиÑимо Ð¾Ñ Ð·Ð°Ð¿ÑоÑа, поÑÑÐ¾Ð¼Ñ REINDEX блокиÑÑÐµÑ Ð¿ÑакÑиÑеÑки лÑбÑе запÑоÑÑ, кÑоме некоÑоÑÑÑ
подгоÑовленнÑÑ
запÑоÑов, план коÑоÑÑÑ
бÑл кеÑиÑован и коÑоÑÑе не иÑполÑзÑÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð½ÐºÑеÑнÑй индекÑ. DROP INDEX, напÑоÑив, моменÑалÑно ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ACCESS EXCLUSIVE на ÑодиÑелÑÑкÑÑ ÑаблиÑÑ, блокиÑÑÑ Ð¸ запиÑÑ, и ÑÑение. ÐоÑледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° CREATE INDEX блокиÑÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, но не ÑÑение; Ñак как Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÑÑÑÑÑÑвÑеÑ, обÑаÑений к Ð½ÐµÐ¼Ñ Ð½Ð¸ пÑи каком ÑÑении не бÑдеÑ, ÑÑо ознаÑаеÑ, ÑÑо блокиÑоваÑÑÑÑ ÑÑение не бÑдеÑ, но вÑполнÑÑÑÑÑ Ð¾Ð½Ð¾ бÑÐ´ÐµÑ ÐºÐ°Ðº доÑогоÑÑоÑÑее поÑледоваÑелÑное ÑканиÑование.
Ðа вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REINDEX search_path вÑеменно менÑеÑÑÑ Ð½Ð° pg_catalog, pg_temp.
ÐÐ»Ñ Ð¿ÐµÑеÑÑÑÐ°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ индекÑа или индекÑов ÑаблиÑÑ Ð½ÐµÐ¾Ð±Ñ
одимо имеÑÑ Ð¿Ñаво MAINTAIN Ð´Ð»Ñ ÑÑой ÑаблиÑÑ. ÐбÑаÑиÑе внимание, ÑÑо Ñ
оÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REINDEX Ð´Ð»Ñ ÑекÑиониÑованного индекÑа или ÑаблиÑÑ ÑÑебÑÑÑ Ð½Ð°Ð»Ð¸ÑÐ¸Ñ Ð¿Ñава MAINTAIN Ð´Ð»Ñ ÑекÑиониÑованной ÑаблиÑÑ, ÑÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ пÑовеÑÑÑÑ Ð½Ð°Ð»Ð¸Ñие пÑав пÑи обÑабоÑке оÑделÑнÑÑ
ÑекÑий. ÐÐ»Ñ Ð¿ÐµÑеиндекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑ
ÐµÐ¼Ñ Ð¸Ð»Ð¸ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
необÑ
одимо бÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем ÑÑой ÑÑ
ÐµÐ¼Ñ Ð¸Ð»Ð¸ Ð±Ð°Ð·Ñ Ð¸Ð»Ð¸ имеÑÑ Ð¿Ñава Ñоли pg_maintain. ÐамеÑÑÑе в ÑаÑÑноÑÑи, ÑÑо вÑледÑÑвие ÑÑого не ÑолÑко ÑÑпеÑполÑзоваÑели могÑÑ Ð¿ÐµÑеÑÑÑаиваÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ ÑаблиÑ, пÑинадлежаÑиÑ
дÑÑгим полÑзоваÑелÑм. Ðднако из ÑÑиÑ
пÑавил еÑÑÑ Ð¸ÑклÑÑение â ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REINDEX DATABASE, REINDEX SCHEMA и REINDEX SYSTEM пÑопÑÑкаÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¾Ð±ÑиÑ
каÑалогов, еÑли ÑолÑко Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½ÐµÑ Ð¿Ñава MAINTAIN Ð´Ð»Ñ ÐºÐ°Ñалога.
ÐеÑеÑÑÑоение ÑекÑиониÑованнÑÑ
индекÑов или индекÑов ÑекÑиониÑованнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑооÑвеÑÑÑвенно командами REINDEX INDEX и REINDEX TABLE. ÐÐ°Ð¶Ð´Ð°Ñ ÑекÑÐ¸Ñ Ñказанного ÑекÑиониÑованного оÑноÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеиндекÑиÑÑеÑÑÑ Ð² оÑделÑной ÑÑанзакÑии. Ðогда ÑÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿ÑименÑÑÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки ÑекÑиониÑованной ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑа, они не могÑÑ Ð½Ð°Ñ
одиÑÑÑÑ Ð² блоке ÑÑанзакÑии.
Ðогда Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REINDEX, обÑабаÑÑваÑÑей ÑекÑиониÑованнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ ÑаблиÑÑ, пÑименÑеÑÑÑ Ñказание TABLESPACE, ÑÑÑлки на ÑаблиÑное пÑоÑÑÑанÑÑво менÑÑÑÑÑ ÑолÑко в конеÑнÑÑ
ÑекÑиÑÑ
. Так как ÑобÑÑвенно ÑекÑиониÑованнÑе индекÑÑ Ð½Ðµ модиÑиÑиÑÑÑÑÑÑ, Ð´Ð»Ñ Ð½Ð¸Ñ
ÑекомендÑеÑÑÑ Ð¾ÑделÑно вÑполниÑÑ ALTER TABLE ONLY, ÑÑÐ¾Ð±Ñ Ð»ÑбÑе ÑекÑии, пÑиÑоединÑемÑе в бÑдÑÑем, оÑноÑилиÑÑ Ðº Ð½Ð¾Ð²Ð¾Ð¼Ñ ÑаблиÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑÑÑанÑÑвÑ. Ð ÑлÑÑае ÑÐ±Ð¾Ñ ÑÑа команда Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ пеÑенеÑÑи вÑе индекÑÑ Ð² новое ÑаблиÑное пÑоÑÑÑанÑÑво. ÐÑи повÑоÑном запÑÑке она бÑÐ´ÐµÑ Ð¿ÐµÑеÑÑÑаиваÑÑ Ð²Ñе конеÑнÑе ÑекÑии и пеÑенеÑÑÑ Ñанее необÑабоÑаннÑе индекÑÑ Ð² новое пÑоÑÑÑанÑÑво.
ÐÑли Ñказание TABLESPACE задаÑÑÑÑ Ð²Ð¼ÐµÑÑе Ñ SCHEMA, DATABASE или SYSTEM, ÑиÑÑемнÑе оÑноÑÐµÐ½Ð¸Ñ Ð¿ÑопÑÑкаÑÑÑÑ Ð¸ вÑдаÑÑÑÑ ÐµÐ´Ð¸Ð½ÑÑвенное пÑедÑпÑеждение об ÑÑом. ÐндекÑÑ TOAST-ÑÐ°Ð±Ð»Ð¸Ñ Ð¿ÐµÑеÑÑÑаиваÑÑÑÑ, но не пеÑемеÑаÑÑÑÑ Ð² новое ÑаблиÑное пÑоÑÑÑанÑÑво.
ÐеблокиÑÑÑÑее пеÑеÑÑÑоение индекÑов
ÐеÑеÑÑÑоение индекÑа Ð¼Ð¾Ð¶ÐµÑ Ð¼ÐµÑаÑÑ Ð¾Ð±ÑÑной ÑабоÑе Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ . ÐбÑÑно PostgreSQL блокиÑÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² пеÑеиндекÑиÑÑемÑÑ ÑаблиÑÑ Ð¸ вÑполнÑÐµÑ Ð²ÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа за одно ÑканиÑование ÑаблиÑÑ. ÐÑÑгие ÑÑанзакÑии могÑÑ Ð¿ÑодолжаÑÑ ÑиÑаÑÑ ÑаблиÑÑ, но пÑи попÑÑке вÑÑавиÑÑ, измениÑÑ Ð¸Ð»Ð¸ ÑдалиÑÑ ÑÑÑоки в ÑаблиÑе они бÑдÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð¾ завеÑÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑ Ð½ÐµÐ¶ÐµÐ»Ð°ÑелÑное влиÑние на ÑабоÑÑ Ð¿ÑоизводÑÑвенной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐндекÑаÑÐ¸Ñ Ð¾ÑÐµÐ½Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð¼Ð½Ð¾Ð³Ð¾ ÑаÑов, и даже Ð´Ð»Ñ Ð¼Ð°Ð»ÐµÐ½ÑÐºÐ¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¿ÐµÑеÑÑÑоение индекÑа Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑие пÑоÑеÑÑÑ Ð½Ð° вÑемÑ, непÑиемлемое Ð´Ð»Ñ Ð¿ÑоизводÑÑвенной ÑиÑÑемÑ.
PostgreSQL поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑеÑÑÑоение индекÑов в Ñежиме минимизаÑии блокиÑовок запиÑи. ÐÑÐ¾Ñ Ñежим вклÑÑаеÑÑÑ Ñказанием CONCURRENTLY ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ REINDEX. С даннÑм Ñказанием PostgreSQL должен вÑполниÑÑ Ð´Ð²Ð° ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаблиÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ индекÑа, коÑоÑÑй нÑжно пеÑеÑÑÑоиÑÑ, и должен дождаÑÑÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð²ÑеÑ
акÑивнÑÑ
ÑÑанзакÑий, коÑоÑÑе могÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй индекÑ. Ð ÑвÑзи Ñ ÑÑим в неблокиÑÑÑÑем Ñежиме пÑоизводиÑÑÑ Ð² Ñелом болÑÑе дейÑÑвий, и длиÑелÑноÑÑÑ Ð¿ÐµÑеиндекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÑиÑелÑно ÑвелиÑиваеÑÑÑ. Ðднако благодаÑÑ ÑомÑ, ÑÑо во вÑÐµÐ¼Ñ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа могÑÑ Ð²ÑполнÑÑÑÑÑ Ð´ÑÑгие обÑÑнÑе опеÑаÑии, ÑÑÐ¾Ñ Ñежим полезен, когда ÑÑебÑеÑÑÑ Ð¿ÐµÑеÑÑÑоиÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð² пÑоизводÑÑвенной ÑÑеде. РазÑмееÑÑÑ, дÑÑгие опеÑаÑии могÑÑ Ð½ÐµÑколÑко замедлиÑÑÑÑ Ð¸Ð·-за дополниÑелÑной нагÑÑзки на пÑоÑеÑÑоÑ, памÑÑÑ Ð¸ ввод-вÑвод, ÑвÑзанной Ñ Ð¿ÐµÑеÑÑÑоением индекÑа.
Ð Ñ Ð¾Ð´Ðµ неблокиÑÑÑÑего пеÑеиндекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑоизводÑÑÑÑ ÑледÑÑÑие дейÑÑÐ²Ð¸Ñ (каждое в оÑделÑной ÑÑанзакÑии). ÐÑли пеÑеиндекÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñ Ð½ÐµÑколÑко индекÑов, ÑнаÑала Ð´Ð»Ñ Ð²ÑÐµÑ Ð¸Ð½Ð´ÐµÐºÑов полноÑÑÑÑ Ð²ÑполнÑеÑÑÑ Ð¾Ð´Ð¸Ð½ ÑÑап, а заÑем дÑÑгой.
РкаÑалог
pg_indexдобавлÑеÑÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð½Ð¾Ðµ опÑеделение индекÑа, коÑоÑое заÑем Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ ÑÑаÑое. ÐÐ»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ -либо изменений в ÑÑ ÐµÐ¼Ðµ во вÑÐµÐ¼Ñ Ð¾Ð¿ÐµÑаÑии обÑабаÑÑваемÑе индекÑÑ, а Ñакже ÑвÑзаннÑе Ñ Ð½Ð¸Ð¼Ð¸ ÑаблиÑÑ Ð·Ð°ÑиÑаÑÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкойSHARE UPDATE EXCLUSIVEна ÑÑовне ÑеанÑа.ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ нового индекÑа вÑполнÑеÑÑÑ Ð¿ÐµÑвÑй пÑÐ¾Ñ Ð¾Ð´, на коÑоÑом ÑÑÑоиÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ. Ðогда Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ÑÑÑоен, его Ñлаг
pg_index.indisreadyпеÑÐµÑ Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑоÑние «true», ÑÑÐ¾Ð±Ñ ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð±Ñл гоÑов к добавлениÑм, и Ñаким обÑазом он ÑÑановиÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñм Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ ÑеанÑов ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле оконÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ÑÑÑоивÑей его ÑÑанзакÑии. ÐÑо дейÑÑвие вÑполнÑеÑÑÑ Ð² оÑделÑной ÑÑанзакÑии Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ индекÑа.ÐаÑем вÑполнÑеÑÑÑ Ð²ÑоÑой пÑÐ¾Ñ Ð¾Ð´, на коÑоÑом в Ð¸Ð½Ð´ÐµÐºÑ Ð²Ð½Ð¾ÑÑÑÑÑ ÐºÐ¾ÑÑежи, добавленнÑе в ÑаблиÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¿ÐµÑвого пÑÐ¾Ñ Ð¾Ð´Ð°. ÐÑо дейÑÑвие Ñакже вÑполнÑеÑÑÑ Ð² оÑделÑной ÑÑанзакÑии Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ индекÑа.
ÐÑе огÑаниÑениÑ, ÑÑÑлаÑÑиеÑÑ Ð½Ð° индекÑ, пеÑеклÑÑаÑÑÑÑ Ð½Ð° опÑеделение нового индекÑа, а Ñакже менÑÑÑÑÑ Ð¸Ð¼ÐµÐ½Ð° индекÑов. Ð ÑÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñлаг
pg_index.indisvalidнового индекÑа пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение «true», а ÑÑаÑого â «false», и пÑоизводиÑÑÑ ÑбÑÐ¾Ñ ÐºÐµÑа, в ÑезÑлÑÑаÑе Ñего вÑе ÑеанÑÑ, обÑаÑавÑиеÑÑ Ðº ÑÑаÑÐ¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ, полÑÑаÑÑ Ð½Ð¾Ð²ÑÑ Ð¸Ð½ÑоÑмаÑиÑ.Флаг
pg_index.indisreadyÑÑаÑого индекÑа ÑбÑаÑÑваеÑÑÑ Ð² «false» во избежание Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² него новÑÑ ÐºÐ¾ÑÑежей, как ÑолÑко завеÑÑаÑÑÑ ÑекÑÑие запÑоÑÑ, коÑоÑÑе могли обÑаÑаÑÑÑÑ Ðº ÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ.СÑаÑÑе индекÑÑ ÑдалÑÑÑÑÑ. ÐлокиÑовки
SHARE UPDATE EXCLUSIVEÑÑÐ¾Ð²Ð½Ñ ÑеанÑа, ÑÑÑановленнÑе Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов и ÑаблиÑ, ÑнимаÑÑÑÑ.
ÐÑли пÑи пеÑеÑÑÑоении индекÑов Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ñоблема, напÑÐ¸Ð¼ÐµÑ Ð½Ð°ÑÑÑение ÑникалÑноÑÑи в ÑникалÑном индекÑе, REINDEX пÑеÑÑваеÑÑÑ, но оÑÑавлÑÐµÑ Ð¿Ð¾Ñле ÑÐµÐ±Ñ Â«Ð½ÐµÑабоÑий» новÑй Ð¸Ð½Ð´ÐµÐºÑ Ð² дополнение к Ñже ÑÑÑеÑÑвÑÑÑемÑ. ÐÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑÑÑ Ð·Ð°Ð¿ÑоÑами, Ñак как он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¿Ð¾Ð»Ð½Ñм; Ñем не менее он бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑÑÑ Ð¿Ñи изменении даннÑÑ
, ÑÑо повлеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе издеÑжки. Ðоманда psql \d бÑÐ´ÐµÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑаÑÑ Ñакой Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ°Ðº INVALID (неÑабоÑий):
postgres=# \d tab
Table "public.tab"
Column | Type | Modifiers
--------+---------+-----------
col | integer |
Indexes:
"idx" btree (col)
"idx_ccnew" btree (col) INVALID ÐÑли Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа Ñ Ð¿Ð¾Ð¼ÐµÑкой INVALID оканÑиваеÑÑÑ Ð½Ð° ccnew, ÑÑо пеÑеÑ
однÑй Ð¸Ð½Ð´ÐµÐºÑ ÑозданнÑй пÑи паÑаллелÑной опеÑаÑии, и Ð´Ð»Ñ Ð¸ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑиÑÑаÑии ÑекомендÑеÑÑÑ ÑдалиÑÑ ÐµÐ³Ð¾, вÑполнив DROP INDEX, а заÑем попÑÑаÑÑÑÑ ÐµÑÑ Ñаз вÑполниÑÑ REINDEX CONCURRENTLY. ÐÑли же Ð¸Ð¼Ñ Ð½ÐµÑабоÑего индекÑа оканÑиваеÑÑÑ Ð½Ð° ccold, знаÑиÑ, ÑÑо иÑÑ
однÑй индекÑ, ÑдалиÑÑ ÐºÐ¾ÑоÑÑй по какой-Ñо пÑиÑине не полÑÑилоÑÑ. Такой Ð¸Ð½Ð´ÐµÐºÑ ÑекомендÑеÑÑÑ Ð¿ÑоÑÑо ÑдалиÑÑ, Ñак как нÑжнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð±Ñл пеÑеÑÑÑоен ÑÑпеÑно. Ð ÑÑÑÑикÑам имÑн неÑабоÑиÑ
индекÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾ ненÑлевое ÑиÑло Ð´Ð»Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¸Ñ
ÑникалÑноÑÑи, напÑÐ¸Ð¼ÐµÑ _ccnew1, _ccold2 и Ñ. д.
ÐбÑÑное поÑÑÑоение индекÑа допÑÑÐºÐ°ÐµÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменное поÑÑÑоение дÑÑгиÑ
индекÑов Ð´Ð»Ñ ÑаблиÑÑ Ð¾Ð±ÑÑнÑм меÑодом, но неблокиÑÑÑÑее поÑÑÑоение Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑной ÑаблиÑÑ Ð² один Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени допÑÑкаеÑÑÑ ÑолÑко одно. Ðднако в лÑбом ÑлÑÑае никакие дÑÑгие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑ
ÐµÐ¼Ñ ÑаблиÑÑ Ð² ÑÑо вÑÐµÐ¼Ñ Ð½Ðµ ÑазÑеÑаÑÑÑÑ. ÐÑÑгое оÑлиÑие ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо в блоке ÑÑанзакÑии Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñполнена обÑÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° REINDEX TABLE или REINDEX INDEX, но не REINDEX CONCURRENTLY.
Ðак и лÑÐ±Ð°Ñ Ð´Ð»Ð¸ÑелÑÐ½Ð°Ñ ÑÑанзакÑиÑ, опеÑаÑÐ¸Ñ REINDEX Ñ ÑаблиÑей Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²Ð»Ð¸ÑÑÑ Ð½Ð° возможноÑÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾ÑÑежей паÑаллелÑной опеÑаÑией VACUUM Ñ ÐºÐ°ÐºÐ¾Ð¹-либо дÑÑгой ÑаблиÑей.
Ðоманда REINDEX SYSTEM не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ñказание CONCURRENTLY, Ñак как ÑиÑÑемнÑе каÑалоги нелÑÐ·Ñ Ð¿ÐµÑеиндекÑиÑоваÑÑ Ð² неблокиÑÑÑÑем Ñежиме.
Ðолее Ñого, в неблокиÑÑÑÑем Ñежиме нелÑÐ·Ñ Ð¿ÐµÑеÑÑÑоиÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ, ÑвÑзаннÑе Ñ Ð¾Ð³ÑаниÑениÑми-иÑклÑÑениÑми. ÐÑли Ñвно ÑказаÑÑ Ð¸Ð¼Ñ Ñакого индекÑа в команде, бÑÐ´ÐµÑ Ð²Ñдана оÑибка. Ðогда в неблокиÑÑÑÑем Ñежиме пеÑеиндекÑиÑÑеÑÑÑ ÑаблиÑа или база даннÑÑ
, ÑодеÑжаÑÐ°Ñ Ñакие индекÑÑ, ÑÑи индекÑÑ Ð¿ÑопÑÑкаÑÑÑÑ. (ÐеÑеÑÑÑоиÑÑ Ñакие индекÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ в обÑÑном Ñежиме, без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ CONCURRENTLY.)
ÐаждÑй пÑоÑеÑÑ, вÑполнÑÑÑий опеÑаÑÐ¸Ñ REINDEX, бÑÐ´ÐµÑ Ð²ÑдаваÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñ
оде ÐµÑ Ð²ÑполнениÑ, оÑобÑажаемÑÑ Ð² пÑедÑÑавлении pg_stat_progress_create_index. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 27.4.4.
ÐÑимеÑÑ
ÐеÑеÑÑÑоение одного индекÑа:
REINDEX INDEX my_index;
ÐеÑеÑÑÑоение вÑеÑ
индекÑов ÑаблиÑÑ my_table:
REINDEX TABLE my_table;
ÐеÑеÑÑÑоение вÑÐµÑ Ð¸Ð½Ð´ÐµÐºÑов в опÑеделÑнной базе даннÑÑ , в пÑедположении, ÑÑо ÑелоÑÑноÑÑÑ ÑиÑÑемнÑÑ Ð¸Ð½Ð´ÐµÐºÑов под Ñомнением:
$export PGOPTIONS="-P"$psql broken_db... broken_db=> REINDEX DATABASE broken_db; broken_db=> \q
ÐеÑеÑÑÑоение индекÑов ÑаблиÑÑ, допÑÑкаÑÑее одновÑеменнÑе опеÑаÑии ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи Ñ Ð·Ð°ÑÑагиваемÑми в пÑоÑеÑÑе пеÑеиндекÑаÑии оÑноÑениÑми:
REINDEX TABLE CONCURRENTLY my_broken_table;
СовмеÑÑимоÑÑÑ
Ðоманда REINDEX оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.