VACUUMDB(1) PostgreSQL 18.6 Documentation VACUUMDB(1)

vacuumdb - پاک‌سازی داده‌های زائد و تحلیل یک پایگاه‌داده PostgreSQL

vacuumdb [connection-option...] [option...] [ -t | --table table [( column [,...] )] ]... [dbname | -a | --all]

vacuumdb [connection-option...] [option...] [ -n | --schema schema ]... [dbname | -a | --all]

vacuumdb [connection-option...] [option...] [ -N | --exclude-schema schema ]... [dbname | -a | --all]

ابزار vacuumdb ابزاری برای پاک‌سازی یک پایگاه‌داده PostgreSQL است. همچنین vacuumdb آمارهای داخلی مورد استفاده بهینه‌ساز پرس‌وجوی PostgreSQL را تولید می‌کند.

دستور vacuumdb پوششی (wrapper) در راستای دستور اس‌کیوال VACUUM است. تفاوت موثری میان اجرای عملیات vacuum و تحلیل پایگاه‌های داده از طریق این ابزار و روش‌های دیگر دسترسی به سرور وجود ندارد.

دستور vacuumdb آرگومان‌های خط فرمان زیر را می‌پذیرد:

-a
--all

تمام پایگاه‌های داده را vacuum می‌کند.

--buffer-usage-limit size

اندازه بافر حلقه‌ای Buffer Access Strategy را برای یک فراخوانی مشخص از vacuumdb تعیین می‌کند. از این اندازه برای محاسبه تعداد بافرهای اشتراکی که به عنوان بخشی از این استراتژی مجدداً استفاده می‌شوند، بهره گرفته می‌شود. VACUUM(7) را ببینید.

[-d] dbname
[--dbname=]dbname

نام پایگاه‌داده‌ای که باید پاک‌سازی یا تحلیل شود را مشخص می‌کند، در صورتی که -a/--all استفاده نشده باشد. اگر این مقدار مشخص نشود، نام پایگاه‌داده از متغیر محیطی PGDATABASE خوانده می‌شود. اگر آن هم تنظیم نشده باشد، نام کاربری تعیین‌شده برای اتصال به کار می‌رود. مقدار dbname می‌تواند یک رشته اتصال (connection string) باشد. در این صورت، پارامترهای رشته اتصال هرگونه گزینه خط فرمان متناقض را بازنویسی خواهند کرد.

--disable-page-skipping

صرف‌نظر کردن از صفحات بر اساس محتوای visibility map را غیرفعال می‌کند.

-e
--echo

دستوراتی که vacuumdb تولید کرده و به سرور می‌فرستد را چاپ (echo) می‌کند.

-f
--full

عملیات “کامل” (full) پاک‌سازی vacuum را انجام می‌دهد.

-F
--freeze

تاپل‌ها را به شکل تهاجمی “منجمد” (freeze) می‌کند.

--force-index-cleanup

همواره مدخل‌های نمایه‌ای (index entries) که به تاپل‌های مرده اشاره می‌کنند را حذف می‌کند.

-j njobs
--jobs=njobs

دستورهای vacuum یا analyze را با اجرای هم‌زمان njobs دستور، به صورت موازی اجرا می‌کند. این گزینه ممکن است زمان پردازش را کاهش دهد، اما بار کاری روی سرور پایگاه‌داده را نیز افزایش می‌دهد.

ابزار vacuumdb تعداد njobs اتصال به پایگاه‌داده باز خواهد کرد، بنابراین اطمینان حاصل کنید که مقدار تنظیم max_connections شما به اندازه کافی بالا باشد تا پاسخگوی همه اتصالات باشد.

توجه داشته باشید که استفاده از این حالت همراه با گزینه -f (FULL) ممکن است در صورت پردازش موازی برخی کاتالوگ‌های سیستم، موجب خطاهای بن‌بست (deadlock) شود.

--min-mxid-age mxid_age

دستورهای vacuum یا analyze را تنها بر روی جدول‌هایی اجرا می‌کند که عمر multixact ID آن‌ها حداقل mxid_age باشد. این تنظیم برای اولویت‌بندی جدول‌ها جهت پردازش و جلوگیری از سرریز (wraparound) شناسه multixact ID مفید است (بخش 24.1.5.1 را ببینید).

برای اهداف این گزینه، عمر multixact ID یک رابطه (relation)، بزرگ‌ترین مقدار میان عمر رابطه اصلی و جدول TOAST وابسته به آن (در صورت وجود) است. از آنجا که دستورهای صادرشده توسط vacuumdb در صورت لزوم جدول TOAST مربوط به رابطه را نیز پردازش خواهند کرد، نیازی نیست به طور جداگانه در نظر گرفته شود.

--min-xid-age xid_age

دستورهای vacuum یا analyze را تنها بر روی جدول‌هایی اجرا می‌کند که عمر شناسه تراکنش (transaction ID) آن‌ها حداقل xid_age باشد. این تنظیم برای اولویت‌بندی جدول‌ها جهت پردازش و جلوگیری از سرریز (wraparound) شناسه تراکنش مفید است (بخش 24.1.5 را ببینید).

برای اهداف این گزینه، عمر transaction ID یک رابطه، بزرگ‌ترین مقدار میان عمر رابطه اصلی و جدول TOAST وابسته به آن (در صورت وجود) است. از آنجا که دستورهای صادرشده توسط vacuumdb در صورت لزوم جدول TOAST مربوط به رابطه را نیز پردازش خواهند کرد، نیازی نیست به طور جداگانه در نظر گرفته شود.

--missing-stats-only

تنها رابطه‌هایی را تحلیل می‌کند که فاقد آمار برای یک ستون، عبارت نمایه‌ای (index expression) یا شیء آماری گسترش‌یافته (extended statistics object) هستند. هنگام استفاده همراه با --analyze-in-stages، این گزینه مانع از این می‌شود که vacuumdb آمارهای موجود را موقتاً با آمارهایی که با اهداف آماری پایین‌تر تولید شده‌اند جایگزین کند؛ در نتیجه از انتخاب‌های موقتاً نامطلوب‌تر توسط بهینه‌ساز پرس‌وجو جلوگیری می‌شود.

این گزینه فقط می‌تواند همراه با --analyze-only یا --analyze-in-stages استفاده شود..sp توجه داشته باشید که --missing-stats-only به مجوزهای SELECT روی pg_statistic و pg_statistic_ext_data نیاز دارد، که به‌طور پیش‌فرض به مدیران سیستم (superusers) محدود شده است.

-n schema
--schema=schema

فقط تمام جدول‌ها را در schema پاک‌سازی یا تحلیل کن. با نوشتن چندین سوئیچ -n می‌توان چندین طرح‌واره (schema) را vacuum کرد.

-N schema
--exclude-schema=schema

هیچ جدولی را در schema پاک‌سازی یا تحلیل نکن. با نوشتن چندین سوئیچ -N می‌توان چندین طرح‌واره را مستثنی کرد.

--no-index-cleanup

مدخل‌های ایندکس که به تاپل‌های مرده (dead tuples) اشاره دارند را حذف نکن.

--no-process-main

از رابطهٔ اصلی صرف‌نظر کن.

--no-process-toast

از جدول TOAST مرتبط با جدولِ در حال vacuum (در صورت وجود) صرف‌نظر کن.

--no-truncate

صفحه‌های خالی در انتهای جدول را کوتاه (truncate) نکن.

-P parallel_workers
--parallel=parallel_workers

تعداد کارگران موازی (parallel workers) را برای parallel vacuum مشخص می‌کند. این به vacuum اجازه می‌دهد تا از چندین پردازنده برای پردازش ایندکس‌ها بهره ببرد. ببینید: VACUUM(7).

-q
--quiet

پیام‌های پیشرفت کار را نمایش نده.

--skip-locked

از رابطه‌هایی که نمی‌توان بلافاصله برای پردازش قفل کرد، صرف‌نظر کن.

-t table [ (column [,...]) ]
--table=table [ (column [,...]) ]

فقط table را پاک‌سازی یا تحلیل کن. نام ستون‌ها را تنها می‌توان در کنار گزینه‌های --analyze یا --analyze-only تعیین کرد. با نوشتن چندین سوئیچ -t می‌توان چندین جدول را vacuum کرد.

نکته
اگر ستون‌ها را مشخص کنید، احتمالاً باید پرانتزها را برای شل (shell) گریزدهی (escape) کنید. (مثال‌های زیر را ببینید.)

-v
--verbose

اطلاعات دقیق و مشروح را در طول پردازش چاپ کن.

-V
--version

نسخهٔ vacuumdb را چاپ کرده و خارج شو.

-z
--analyze

همچنین آمارها را برای استفاده توسط بهینه‌ساز (optimizer) محاسبه کن.

-Z
--analyze-only

تنها آمارها را برای استفاده توسط بهینه‌ساز محاسبه کن (بدون vacuum).

--analyze-in-stages

مانند --analyze-only تنها آمارها را برای استفاده توسط بهینه‌ساز محاسبه می‌کند (بدون vacuum). تحلیل را در سه مرحله اجرا می‌کند؛ مرحلهٔ نخست از کمترین هدف آماری ممکن (ببینید: default_statistics_target) استفاده می‌کند تا آمارهای قابل استفاده را سریع‌تر تولید کند، و مراحل بعدی آمارهای کامل را می‌سازند.

این گزینه تنها برای تحلیل پایگاه داده‌ای مفید است که در حال حاضر هیچ آماری ندارد یا آمارهای آن کاملاً نادرست است؛ مانند زمانی که به تازگی از یک dump بازیابی شده یا توسط pg_upgrade ایجاد شده باشد. توجه داشته باشید که اجرای این گزینه در یک پایگاه داده با آمارهای موجود ممکن است به دلیل اهداف آماری پایین در مراحل ابتدایی، تصمیمات بهینه‌ساز پرس‌وجو را به‌طور موقت تضعیف کند.

-?
--help

نمایش راهنما درباره آرگومان‌های خط فرمان vacuumdb و خروج.

ابزار vacuumdb همچنین آرگومان‌های خط فرمان زیر را برای پارامترهای اتصال می‌پذیرد:

-h host
--host=host

نام میزبانِ ماشینی که سرور روی آن در حال اجرا است را مشخص می‌کند. اگر این مقدار با یک اسلش (ممیز) آغاز شود، به عنوان دایرکتوری سوکت دامنه یونیکس (Unix domain socket) استفاده می‌شود.

-p port
--port=port

پورت TCP یا پسوند فایل سوکت دامنه یونیکس محلی را که سرور برای اتصالات به آن گوش می‌دهد مشخص می‌کند.

-U username
--username=username

نام کاربری برای اتصال.

-w
--no-password

هرگز درخواست رمز عبور نشان داده نشود. اگر سرور نیازمند احراز هویت با رمز عبور باشد و رمز عبوری از راه‌های دیگر نظیر یک فایل .pgpass در دسترس نباشد، تلاش برای اتصال ناموفق خواهد بود. این گزینه می‌تواند در کارهای دسته‌ای (batch jobs) و اسکریپت‌هایی که هیچ کاربری برای وارد کردن رمز عبور در آن‌ها حضور ندارد، مفید باشد. -W
--password
اجبار vacuumdb به درخواست گذرواژه پیش از اتصال به یک پایگاه‌داده.

این گزینه هرگز ضروری نیست، چرا که اگر کارساز احراز هویت با گذرواژه را درخواست کند، vacuumdb به‌طور خودکار گذرواژه را درخواست خواهد کرد. با این حال، vacuumdb یک تلاش اتصال را برای پی بردن به اینکه کارساز گذرواژه می‌خواهد هدر خواهد داد. در برخی موارد برای جلوگیری از تلاش اتصال اضافی، وارد کردن -W ارزشش را دارد.

--maintenance-db=dbname

هنگامی که -a/--all استفاده شود، برای جمع‌آوری فهرست پایگاه‌های داده جهت پاک‌سازی، به این پایگاه‌داده متصل می‌شود. اگر مشخص نشده باشد، از پایگاه‌دادهٔ postgres استفاده خواهد شد، یا اگر آن وجود نداشته باشد، از template1 استفاده می‌شود. این مقدار می‌تواند یک رشتهٔ اتصال (connection string) باشد. در این صورت، پارامترهای رشتهٔ اتصال بر هر گزینهٔ خط فرمانی که در تعارض باشد ارجحیت خواهند داشت. همچنین، پارامترهای رشتهٔ اتصال به جز خود نام پایگاه‌داده، هنگام اتصال به سایر پایگاه‌های داده نیز دوباره استفاده خواهند شد.

PGDATABASE
PGHOST
PGPORT
PGUSER

پارامترهای اتصال پیش‌فرض

PG_COLOR

مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر. مقادیر مجاز عبارتند از always، auto و never.

این ابزار، مانند بیشتر ابزارهای دیگر PostgreSQL، از متغیرهای محیطی پشتیبانی‌شده توسط libpq نیز استفاده می‌کند (بخش 32.15 را ببینید).

در صورت بروز مشکل، برای بررسی مشکلات احتمالی و پیام‌های خطا، به VACUUM(7) و psql(1) مراجعه کنید. کارساز پایگاه‌داده باید روی میزبان هدف در حال اجرا باشد. همچنین، هرگونه تنظیمات اتصال پیش‌فرض و متغیرهای محیطی مورد استفاده توسط کتابخانهٔ فرانت‌اند libpq اعمال خواهند شد.

برای پاک‌سازی پایگاه‌دادهٔ test:

$ vacuumdb test

برای پاک‌سازی و تحلیل برای بهینه‌ساز در پایگاه‌داده‌ای به نام bigdb:

$ vacuumdb --analyze bigdb

برای پاک‌سازی یک جدول تکی foo در پایگاه‌داده‌ای به نام xyzzy، و تحلیل یک ستون تکی bar از آن جدول برای بهینه‌ساز:

$ vacuumdb --analyze --verbose --table='foo(bar)' xyzzy

برای پاک‌سازی تمام جدول‌ها در شِماهای (schemas) foo و bar در پایگاه‌داده‌ای به نام xyzzy:

$ vacuumdb --schema='foo' --schema='bar' xyzzy
VACUUM(7)
2026 PostgreSQL 18.6