pg_repack
pg_repack â ÑÑилиÑа и ÑаÑÑиÑение Postgres Pro Standard Ð´Ð»Ñ ÑеоÑганизаÑии ÑаблиÑ
СинÑакÑиÑ
pg_repack [паÑамеÑÑ...] [имÑ_бд]
ÐпиÑание
ÐодÑÐ»Ñ pg_repack â ÑÑо ÑаÑÑиÑение Postgres Pro Standard, коÑоÑое позволÑÐµÑ Ð»Ð¸ÐºÐ²Ð¸Ð´Ð¸ÑоваÑÑ ÑаздÑвание ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов и Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно воÑÑÑанавливаÑÑ ÑизиÑеÑкий поÑÑдок клаÑÑеÑизованнÑÑ
индекÑов. РоÑлиÑие Ð¾Ñ CLUSTER и VACUUM FULL, оно вÑполнÑÐµÑ ÑÑи опеÑаÑии «на Ñ
одÑ», обÑ
одÑÑÑ Ð±ÐµÐ· иÑклÑÑиÑелÑнÑÑ
блокиÑовок ÑÐ°Ð±Ð»Ð¸Ñ Ð² Ñ
оде иÑ
обÑабоÑки. Ð ÑÐ¾Ð¼Ñ Ð¶Ðµ pg_repack дейÑÑвÑÐµÑ ÑÑÑекÑивно, демонÑÑÑиÑÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ, ÑÑавнимÑÑ Ñ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм иÑполÑзованием CLUSTER.
pg_repack â ÑÑо алÑÑеÑнаÑÐ¸Ð²Ð½Ð°Ñ Ð²ÐµÑÐ²Ñ ÑазвиÑÐ¸Ñ Ð¿ÑоекÑа https://github.com/reorg/pg_reorg.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑбÑаÑÑ Ð¾Ð´Ð¸Ð½ из ÑледÑÑÑÐ¸Ñ ÑпоÑобов ÑеоÑганизаÑии даннÑÑ :
ÐеблокиÑÑÑÑÐ°Ñ ÐºÐ»Ð°ÑÑеÑизаÑÐ¸Ñ (
CLUSTER) (Ñ ÑпоÑÑдоÑиванием по клаÑÑеÑизÑÑÑÐµÐ¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ)УпоÑÑдоÑивание по ÑказаннÑм ÑÑолбÑам
ÐеблокиÑÑÑÑÐ°Ñ Ð¿Ð¾Ð»Ð½Ð°Ñ Ð¾ÑиÑÑка (
VACUUM FULL) (ÑолÑко Ñпаковка ÑÑÑок)ÐеÑеÑÑÑоение или пеÑемеÑение ÑолÑко индекÑов ÑаблиÑÑ
ÐÑимеÑание
ÐÑполÑзоваÑÑ ÑÑÑ ÑÑилиÑÑ Ð¼Ð¾Ð³ÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели.
ÐÑимеÑание
Ð Ñелевой ÑаблиÑе должен бÑÑÑ Ð¿ÐµÑвиÑнÑй клÑÑ (PRIMARY KEY) или как минимÑм ÑникалÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ ÑÑолбÑÑ NOT NULL.
УÑÑановка
ÐÐ»Ñ ÑиÑÑем Linux pg_repack поÑÑавлÑеÑÑÑ Ñ Postgres Pro Standard в виде оÑделÑного пакеÑа pg-repack-std-13, коÑоÑÑй ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð±Ñл ÑÑÑановлен Ð¿Ð°ÐºÐµÑ postgrespro-std-13-server Ñо вÑеми завиÑимоÑÑÑми. СпиÑок пÑедоÑÑавлÑемÑÑ
пакеÑов и подÑобное опиÑание ÑÑÑановки можно найÑи в Ðлаве 16. Ð ÑиÑÑемаÑ
Windows pg_repack ÑÑÑанавливаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки в ÑоÑÑаве Postgres Pro.
УÑÑановив pg_repack, загÑÑзиÑе ÑаÑÑиÑение pg_repack в Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, коÑоÑÑÑ Ð²Ñ Ñ
оÑиÑе обÑабаÑÑваÑÑ, ÑледÑÑÑим обÑазом:
$ psql -c "CREATE EXTENSION pg_repack" -d ваÑа_база
ÐпоÑледÑÑвии Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑдалиÑÑ pg_repack из инÑÑаллÑÑии Postgres Pro, вÑполнив DROP EXTENSION pg_repack.
ЧÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ñанее ÑÑÑановленнÑÑ Ð²ÐµÑÑÐ¸Ñ pg_repack, пÑоÑÑо ÑдалиÑе из Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÑаÑÑÑ Ð²ÐµÑÑиÑ, как опиÑано вÑÑе, и ÑÑÑановиÑе новÑÑ.
ÐаÑамеÑÑÑ
ÐаÑамеÑÑÑ ÑеоÑганизаÑии
-a--allÐопÑÑаÑÑÑÑ Ð¿ÐµÑепаковаÑÑ Ð²Ñе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² клаÑÑеÑе. ÐÐ°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , в коÑоÑÑÑ ÑаÑÑиÑение
pg_repackне ÑÑÑановлено, бÑдÑÑ Ð¿ÑопÑÑенÑ.-tÑаблиÑа--table=ÑаблиÑаРеоÑганизоваÑÑ ÑолÑко ÑказаннÑÑ ÑаблиÑÑ (ÑаблиÑÑ). РеоÑганизоваÑÑ Ð½ÐµÑколÑко ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾, добавив неÑколÑко клÑÑей
-t. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑеоÑганизÑÑÑÑÑ Ð²Ñе Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑие ÑаблиÑÑ Ð² ÑелевÑÑ Ð±Ð°Ð·Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ .-IÑаблиÑа--parent-table=ÑаблиÑаРеоÑганизоваÑÑ ÐºÐ°Ðº ÑказаннÑÑ ÑаблиÑÑ (ÑаблиÑÑ), Ñак и доÑеÑние. РеоÑганизоваÑÑ Ð½ÐµÑколÑко иеÑаÑÑ Ð¸Ð¹ ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾, добавив неÑколÑко клÑÑей
-I.-cÑÑ ÐµÐ¼Ð°--schema=ÑÑ ÐµÐ¼Ð°ÐеÑепаковаÑÑ ÑаблиÑÑ ÑолÑко в Ñказанной ÑÑ ÐµÐ¼Ðµ (ÑÑ ÐµÐ¼Ð°Ñ ). ÐеÑепаковаÑÑ Ð½ÐµÑколÑко ÑÑ ÐµÐ¼ можно, добавив неÑколÑко клÑÑей
-c. Ðожно иÑполÑзоваÑÑ Ð² ÑоÑеÑании Ñ--tablespaceÐ´Ð»Ñ Ð¿ÐµÑемеÑÐµÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð² дÑÑгое ÑаблиÑное пÑоÑÑÑанÑÑво.-oÑÑолбеÑ[, ...]--order-by=ÑÑолбеÑ[, ...]ÐÑполниÑÑ Ð½ÐµÐ±Ð»Ð¾ÐºÐ¸ÑÑÑÑÑÑ ÐºÐ»Ð°ÑÑеÑизаÑÐ¸Ñ (
CLUSTER), ÑпоÑÑдоÑÐ¸Ð²Ð°Ñ Ð´Ð°Ð½Ð½Ñе по ÑказаннÑм ÑÑолбÑам.-n--no-orderÐÑполниÑÑ Ð½ÐµÐ±Ð»Ð¾ÐºÐ¸ÑÑÑÑÑÑ Ð¿Ð¾Ð»Ð½ÑÑ Ð¾ÑиÑÑÐºÑ (
VACUUM FULL). ÐаÑÐ¸Ð½Ð°Ñ Ñ Ð²ÐµÑÑии 1.2, ÑÑо пÑоизводиÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½ÐµÐºÐ»Ð°ÑÑеÑизованнÑÑ ÑаблиÑ.-N--dry-runТолÑко показаÑÑ, какие ÑаблиÑÑ Ð±ÑдÑÑ Ð¿ÐµÑепакованÑ, и завеÑÑиÑÑÑÑ.
-jnum_jobs--jobs=num_jobsУÑÑановиÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ колиÑеÑÑво дополниÑелÑнÑÑ Ñоединений к Postgres Pro и иÑполÑзоваÑÑ ÑÑи дополниÑелÑнÑе подклÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿ÐµÑеÑÑÑÐ°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов ÑÐ°Ð±Ð»Ð¸Ñ Ð² паÑаллелÑном Ñежиме. ÐаÑаллелÑное пеÑеÑÑÑоение индекÑов поддеÑживаеÑÑÑ ÑолÑко пÑи ÑеоÑганизаÑии ÑÐ°Ð±Ð»Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, без клÑÑей
--indexили--only-indexes. ÐÑли Ð²Ð°Ñ ÑеÑÐ²ÐµÑ Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко пÑоÑеÑÑоÑнÑÑ ÑÐ´ÐµÑ Ð¸ бÑÑÑÑÑÑ Ð´Ð¸ÑковÑÑ Ð¿Ð¾Ð´ÑиÑÑемÑ, паÑаллелÑнÑй Ñежим Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ Ð´Ð»Ñ ÑÑкоÑÐµÐ½Ð¸Ñ pg_repack.-sÑаблиÑное_пÑоÑÑÑанÑÑво--tablespace=ÑаблиÑное_пÑоÑÑÑанÑÑвоÐеÑенеÑÑи пеÑепакованнÑе ÑаблиÑÑ Ð² заданное ÑаблиÑное пÑоÑÑÑанÑÑво: по ÑÑÑи ÑÑо неблокиÑÑÑÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
ALTER TABLE ... SET TABLESPACE. ÐндекÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð¾ÑÑаÑÑÑÑ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ ÑаблиÑном пÑоÑÑÑанÑÑве, еÑли ÑолÑко дополниÑелÑно не Ñказан клÑÑ--moveidx.-S--moveidxТакже пеÑенеÑÑи индекÑÑ Ð¿ÐµÑепакованнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð² ÑаблиÑное пÑоÑÑÑанÑÑво, заданное клÑÑом
--tablespace.-iиндекÑ--index=индекÑÐеÑепаковаÑÑ ÑолÑко ÑказаннÑй индекÑ. ÐеÑепаковаÑÑ Ð½ÐµÑколÑко индекÑов можно, добавив неÑколÑко клÑÑей
-i. Ðожно иÑполÑзоваÑÑ Ð² ÑоÑеÑании Ñ--tablespaceÐ´Ð»Ñ Ð¿ÐµÑемеÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов в дÑÑгое ÑаблиÑное пÑоÑÑÑанÑÑво.-x--only-indexesÐеÑепаковаÑÑ ÑолÑко индекÑÑ ÑаблиÑ, заданнÑÑ ÐºÐ»ÑÑами
--table.-TÑек--wait-timeout=ÑекРаÑÑиÑÐµÐ½Ð¸Ñ pg_repack Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ полÑÑиÑÑ Ð¸ÑклÑÑиÑелÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð² конÑе ÑеоÑганизаÑии. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, ÑколÑко ÑекÑнд pg_repack бÑÐ´ÐµÑ Ð¶Ð´Ð°ÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑÑой блокиÑовки. ÐÑли за ÑÑо вÑÐµÐ¼Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка не бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑена и паÑамеÑÑ
--no-kill-backendне Ñказан, pg_repack пÑинÑдиÑелÑно оÑÐ¼ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑликÑÑÑÑие запÑоÑÑ. ÐÑли же Ð²Ñ Ð¸ÑполÑзÑеÑе Postgres Pro или PostgreSQL веÑÑии 8.4 и новее, pg_repack пÑÐ¸Ð±ÐµÐ³Ð½ÐµÑ Ðº вÑзовÑpg_terminate_backend(), ÑÑÐ¾Ð±Ñ Ð¾ÑклÑÑиÑÑ Ð²Ñе оÑÑавÑиеÑÑ ÑоновÑе пÑоÑеÑÑÑ, поÑле Ñого, как ÑÑо вÑÐµÐ¼Ñ Ð¸ÑÑеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ. ÐнаÑение по ÑмолÑаниÑ: 60 Ñек.-D--no-kill-backendÐÑопÑÑкаÑÑ Ð¿ÐµÑÐµÐ¿Ð°ÐºÐ¾Ð²ÐºÑ ÑаблиÑÑ Ð²Ð¼ÐµÑÑо оÑÐ¼ÐµÐ½Ñ ÐºÐ¾Ð½ÑликÑÑÑÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов, еÑли блокиÑовка не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑена в ÑеÑение вÑемени, Ñказанного в
--wait-timeout. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ âfalse.-Z--no-analyzeÐе вÑполнÑÑÑ
ANALYZEпоÑле полной ÑеоÑганизаÑии ÑаблиÑÑ. РоÑÑÑÑÑÑвие ÑÑого клÑÑа поÑле ÑеоÑганизаÑииANALYZEвÑполнÑеÑÑÑ.-k--no-superuser-checkÐÑопÑÑкаÑÑ Ð¿ÑовеÑÐºÑ ÑÑпеÑполÑзоваÑÐµÐ»Ñ ÐºÐ»Ð¸ÐµÐ½Ñом. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ пÑи иÑполÑзовании pg_repack на плаÑÑоÑÐ¼Ð°Ñ , коÑоÑÑе поддеÑживаÑÑ Ð·Ð°Ð¿ÑÑк ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð½Ðµ Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑÑпеÑполÑзоваÑелÑ.
-C--exclude-extensionÐÑопÑÑкаÑÑ ÑаблиÑÑ, коÑоÑÑе пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÑаÑÑиÑÐµÐ½Ð¸Ñ (ÑаÑÑиÑениÑм). ÐÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ ÑаÑÑиÑений Ð¼Ð¾Ð¶ÐµÑ ÑилÑно завиÑеÑÑ Ð¾Ñ ÑÐ°ÐºÐ¸Ñ ÑаблиÑ.
--switch-thresholdÐеÑеклÑÑаÑÑ ÑаблиÑÑ, когда в ÑаблиÑе жÑÑнала оÑÑаÑÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ ÑиÑло коÑÑежей. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ, ÑÑÐ¾Ð±Ñ Ð¸Ð¼ÐµÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð½Ð°Ð³Ð½Ð°ÑÑ ÑаблиÑÑ Ñ Ð±Ð¾Ð»ÑÑим обÑÑмом запиÑи.
ÐаÑамеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ
ÐаÑамеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ðº ÑеÑвеÑам. ÐаÑамеÑÑ --all нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð²Ð¼ÐµÑÑе Ñ --dbname, --table или --parent-table.
-a--allРеоÑганизоваÑÑ Ð²Ñе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
[-d]имÑ_бд[--dbname=]имÑ_бдУказÑÐ²Ð°ÐµÑ Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð´Ð»Ñ ÑеоÑганизаÑии. ÐÑли оно не Ñказано, и паÑамеÑÑ
-a(или--all) не иÑполÑзÑеÑÑÑ, Ñо Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ Ð±ÐµÑÑÑÑÑ Ð¸Ð· пеÑеменной окÑÑжениÑPGDATABASE. ÐÑли и ÑÑа пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ задана, вÑбиÑаеÑÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑегоÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑ.-hÑеÑвеÑ--host=ÑеÑвеÑУказÑÐ²Ð°ÐµÑ Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа, на коÑоÑом ÑабоÑÐ°ÐµÑ ÑеÑвеÑ. ÐÑли знаÑение наÑинаеÑÑÑ Ñ ÐºÐ¾Ñой ÑеÑÑÑ, оно опÑеделÑÐµÑ ÐºÐ°Ñалог Unix-ÑокеÑа.
-pпоÑÑ--port=поÑÑУказÑÐ²Ð°ÐµÑ TCP-поÑÑ Ð¸Ð»Ð¸ ÑаÑÑиÑение Ñайла локалÑного Unix-ÑокеÑа, ÑеÑез коÑоÑÑй ÑеÑÐ²ÐµÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ.
-UимÑ_полÑзоваÑелÑ--username=имÑ_полÑзоваÑелÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ.
-w--no-passwordÐе вÑдаваÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° ввод паÑолÑ. ÐÑли ÑеÑÐ²ÐµÑ ÑÑебÑÐµÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾ паÑÐ¾Ð»Ñ Ð¸ паÑÐ¾Ð»Ñ Ð½Ðµ доÑÑÑпен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð´ÑÑÐ³Ð¸Ñ ÑÑедÑÑв, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº Ñайл
.pgpass, попÑÑка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ ÑдаÑÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ в пакеÑнÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸ÑÑ Ð¸ ÑкÑипÑÐ°Ñ , где Ð½ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, коÑоÑÑй Ð²Ð²Ð¾Ð´Ð¸Ñ Ð¿Ð°ÑолÑ.-W--passwordÐÑинÑдиÑелÑно запÑаÑиваÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð¿ÐµÑед подклÑÑением к базе даннÑÑ .
ÐÑо неÑÑÑеÑÑвеннÑй паÑамеÑÑ, Ñак как pg_repack запÑаÑÐ¸Ð²Ð°ÐµÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð°Ð²ÑомаÑиÑеÑки, еÑли ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑÐµÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑÑ Ð¿Ð¾ паÑолÑ. Ðднако ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ ÑÑо, pg_repack лиÑний Ñаз подклÑÑаеÑÑÑ Ðº ÑеÑвеÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ввеÑÑи
-W, ÑÑÐ¾Ð±Ñ Ð¸ÑклÑÑиÑÑ ÑÑÑ Ð½ÐµÐ½ÑжнÑÑ Ð¿Ð¾Ð¿ÑÑÐºÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ.
ÐбÑие паÑамеÑÑÑ
-e--echoÐÑводиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, коÑоÑÑе pg_repack ÑоÑмиÑÑÐµÑ Ð¸ пеÑедаÑÑ Ð½Ð° ÑеÑвеÑ.
-EÑÑовенÑ--elevel=ÑÑовенÑУÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑводимÑÑ ÑообÑений:
DEBUG,INFO,NOTICE,WARNING,ERROR,LOG,FATALиPANIC. УÑÐ¾Ð²ÐµÐ½Ñ Ð¿Ð¾ ÑмолÑаниÑ:INFO.--helpÐÑвеÑÑи ÑпÑÐ°Ð²ÐºÑ Ð¾Ð± аÑгÑменÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки pg_repack и завеÑÑиÑÑÑÑ.
-V--versionÐÑвеÑÑи веÑÑÐ¸Ñ pg_repack и завеÑÑиÑÑÑÑ.
ÐеÑеменнÑе окÑÑжениÑ
PGDATABASEPGHOSTPGPORTPGUSERÐаÑамеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ
ÐÑа ÑÑилиÑа, как и болÑÑинÑÑво дÑÑÐ³Ð¸Ñ ÑÑÐ¸Ð»Ð¸Ñ Postgres Pro, Ñакже иÑполÑзÑÐµÑ Ð¿ÐµÑеменнÑе ÑÑедÑ, поддеÑживаемÑе libpq (Ñм. Раздел 32.14).
ÐÑимеÑÑ
ÐÑполнение неблокиÑÑÑÑей клаÑÑеÑизаÑии (CLUSTER) вÑеÑ
клаÑÑеÑизованнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ полной оÑиÑÑки (VACUUM FULL) вÑеÑ
неклаÑÑеÑизованнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð² базе даннÑÑ
test:
$ pg_repack test
ÐÑполнение неблокиÑÑÑÑей полной оÑиÑÑки (VACUUM FULL) в ÑаблиÑаÑ
foo и bar в базе даннÑÑ
test (клаÑÑеÑнÑе индекÑÑ, еÑли они еÑÑÑ, игноÑиÑÑÑÑÑÑ):
$ pg_repack --no-order --table foo --table bar test
ÐеÑемеÑение вÑеÑ
индекÑов ÑаблиÑÑ foo в ÑаблиÑное пÑоÑÑÑанÑÑво tbs:
$ pg_repack -d test --table foo --only-indexes --tablespace tbs
ÐеÑемеÑение Ñказанного индекÑа в ÑаблиÑное пÑоÑÑÑанÑÑво tbs:
$ pg_repack -d test --index idx --tablespace tbs
ÐиагноÑÑика
Ð ÑлÑÑае оÑибок pg_repack вÑдаÑÑ ÑооÑвеÑÑÑвÑÑÑие ÑообÑениÑ. Ð ÑледÑÑÑем ÑпиÑке поÑÑнÑÑÑÑÑ Ð¿ÑиÑÐ¸Ð½Ñ ÑÑда оÑибок.
Ð ÑлÑÑае неиÑпÑавимÑÑ
оÑибок вам поÑÑебÑеÑÑÑ Ð¿ÑовеÑÑи оÑиÑÑÐºÑ Ð²ÑÑÑнÑÑ. ÐÐ»Ñ ÑÑого пÑоÑÑо ÑдалиÑе pg_repack из Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, а заÑем Ñнова ÑÑÑановиÑе ÑÑо ÑаÑÑиÑение.
ÐÐ»Ñ Postgres Pro или PostgreSQL веÑÑии 9.1 и новее вÑполниÑе:
DROP EXTENSION pg_repack CASCADE
в базе даннÑÑ , где пÑоизоÑла оÑибка. ÐаÑем вÑполниÑе:
CREATE EXTENSION pg_repack
ÐÐ»Ñ Ð¿ÑедÑдÑÑиÑ
веÑÑий загÑÑзиÑе ÑкÑÐ¸Ð¿Ñ $SHAREDIR/contrib/uninstall_pg_repack.sql в Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, где пÑоизоÑла оÑибка, а заÑем повÑоÑно загÑÑзиÑе $SHAREDIR/contrib/pg_repack.sql.
INFO: database "db" skipped:
pg_repack VER is not installed in the database:
pg_repack is not installed in the database when the --all option is specified.
СоздайÑе ÑаÑÑиÑение pg_repack в базе даннÑÑ
.
ERROR: pg_repack VER is not installed in the database:
pg_repack is not installed in the database specified by --dbname
СоздайÑе ÑаÑÑиÑение pg_repack в базе даннÑÑ
.
ERROR: program 'pg_repack V1' does not match database library 'pg_repack V2':
There is a mismatch between the pg_repack binary and the database library
(.so or .dll).
ÐбнаÑÑженное неÑооÑвеÑÑÑвие веÑÑий Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑвÑзано Ñ Ð½Ð°Ñ
ождением некоÑÑекÑной пÑогÑÐ°Ð¼Ð¼Ñ Ð² пеÑеменной PATH или обÑаÑением к непÑавилÑной базе даннÑÑ
. ÐÑовеÑÑÑе коÑÑекÑноÑÑÑ ÐºÐ°Ñалога пÑогÑÐ°Ð¼Ð¼Ñ Ð¸ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
; еÑли вÑÑ Ð²ÐµÑно, возможно, вам пÑидÑÑÑÑ Ð¿ÐµÑеÑÑÑановиÑÑ pg_repack.
ERROR: extension 'pg_repack V1' required, found 'pg_repack V2':
The SQL extension found in the database does not match the version required by the pg_repack program.
СÑолкнÑвÑиÑÑ Ñ Ñакой оÑибкой, ÑдалиÑе ÑаÑÑиÑение из Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ пеÑеÑоздайÑе его, как опиÑано в Разделе «УÑÑановка».
ERROR: relation "table" must have a primary key or not-null unique keys:
The target table doesn't have a PRIMARY KEY or any UNIQUE constraints defined.
СоздайÑе в Ñказанной ÑаблиÑе огÑаниÑение PRIMARY KEY или UNIQUE.
ERROR: query failed: ERROR: column "col" does not exist:
The target table doesn't have columns specified by --order-by option.
УкажиÑе ÑÑÑеÑÑвÑÑÑие ÑÑолбÑÑ.
WARNING: the table "tbl" already has a trigger called z_repack_trigger:
The trigger was probably installed during a previous attempt
to run pg_repack on the table which was interrupted
and for some reason failed to clean up the temporary objects.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе ликвидиÑоваÑÑ Ð²Ñе вÑеменнÑе обÑекÑÑ, Ñдалив и Ñоздав ÑаÑÑиÑение заново: ÑÑо опиÑано подÑобно в Разделе «УÑÑановка».
WARNING: trigger "trg" conflicting on table "tbl":
The target table has a trigger whose name follows z_repack_trigger
in alphabetical order.
ТÑÐ¸Ð³Ð³ÐµÑ z_repack_trigger должен бÑÑÑ Ð¿Ð¾Ñледним ÑÑиггеÑом в набоÑе BEFORE. ÐеÑеименÑйÑе Ñвой ÑÑиггеÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½ ÑÑл в алÑавиÑном поÑÑдке пеÑед pg_repack; ÑÑо можно ÑделаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹:
ALTER TRIGGERzzz_my_triggerONÑаблиÑаRENAME TOyyy_my_trigger;
ERROR: Another pg_repack command may be running on the table. Please try again later.
Ðогда две ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ pg_repack вÑполнÑÑÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно, возможна взаимоблокиÑовка. Ð Ñаком ÑлÑÑае ÑÑÐ¾Ð¸Ñ Ð¿Ð¾Ð¿ÑобоваÑÑ Ð²ÑполнÑÑÑ ÑÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñ Ð½ÐµÐºÐ¾ÑоÑой задеÑжкой.
WARNING: Cannot create index "schema"."index_xxxxx", already exists
DETAIL: An invalid index may have been left behind by a previous
pg_repack on the table which was interrupted. Please use DROP INDEX
"schema"."index_xxxxx" to remove this index and try again.
ÐоÑ
оже, ÑÑо в базе даннÑÑ
оÑÑалÑÑ Ð²ÑеменнÑй индекÑ, ÑозданнÑй пÑогÑаммой pg_repack, но он не ÑдалÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки во избежание недоÑазÑмений. ÐÑли ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð´ÐµÐ¹ÑÑвиÑелÑно бÑл Ñоздан ÑÑаÑÑм заданием pg_repack и по какой-Ñо пÑиÑине не ÑдалилÑÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑоÑÑо вÑполниÑÑ DROP INDEX и повÑоÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ repack еÑÑ Ñаз.
ÐгÑаниÑениÑ
pg_repack Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑие огÑаниÑениÑ.
- ÐÑеменнÑе ÑаблиÑÑ
pg_repack не Ð¼Ð¾Ð¶ÐµÑ ÑеоÑганизовÑваÑÑ Ð²ÑеменнÑе ÑаблиÑÑ.
- ÐндекÑÑ GiST
pg_repack не Ð¼Ð¾Ð¶ÐµÑ ÐºÐ»Ð°ÑÑеÑизоваÑÑ ÑаблиÑÑ ÑоглаÑно индекÑÑ
GiST.- ÐÐ¾Ð¼Ð°Ð½Ð´Ñ DDL
Ðока ÑабоÑÐ°ÐµÑ pg_repack, нелÑÐ·Ñ Ð²ÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ DDL Ñ ÑелевÑми ÑаблиÑами, за иÑклÑÑением
VACUUMиANALYZE. ÐÐ»Ñ ÑеализаÑии ÑÑого огÑаниÑÐµÐ½Ð¸Ñ pg_repack ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑACCESS SHAREв Ñелевой ÑаблиÑе на вÑÐµÐ¼Ñ ÑеоÑганизаÑии ÑаблиÑÑ.ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе веÑÑÐ¸Ñ ÑаÑÑиÑÐµÐ½Ð¸Ñ 1.1.8 или ÑÑаÑее, воздеÑжиÑеÑÑ Ð¾Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ -либо команд DDL Ñ ÑелевÑми ÑаблиÑами в пÑоÑеÑÑе ÑабоÑÑ pg_repack. Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑлÑÑаÑÑ pg_repack вÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¸ оÑÐ¼ÐµÐ½Ð¸Ñ Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾ÑÑекÑно, но Ñ ÑÑими ÑÑаÑÑми веÑÑиÑми в некоÑоÑÑÑ ÑлÑÑаÑÑ Ð±Ñло возможно ÑазÑÑÑение даннÑÑ .