'\" t .\" Title: vacuumdb .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026 .\" Manual: PostgreSQL 18.6 Documentation .\" Source: PostgreSQL 18.6 .\" Language: English .\" .TH "VACUUMDB" "1" "2026" "PostgreSQL 18.6" "PostgreSQL 18.6 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" vacuumdb \- پاک‌سازی داده‌های زائد و تحلیل یک پایگاه‌داده PostgreSQL .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBvacuumdb\fR\ 'u \fBvacuumdb\fR [\fIconnection\-option\fR...] [\fIoption\fR...] [\ \fB\-t\fR\ |\ \fB\-\-table\fR\ \fItable\fR\ [(\ \fIcolumn\fR\ [,\&.\&.\&.]\ )]\ ]... [\fIdbname\fR\ |\ \fB\-a\fR\ |\ \fB\-\-all\fR] .HP \w'\fBvacuumdb\fR\ 'u \fBvacuumdb\fR [\fIconnection\-option\fR...] [\fIoption\fR...] [\ \fB\-n\fR\ |\ \fB\-\-schema\fR\ \fIschema\fR\ ]... [\fIdbname\fR\ |\ \fB\-a\fR\ |\ \fB\-\-all\fR] .HP \w'\fBvacuumdb\fR\ 'u \fBvacuumdb\fR [\fIconnection\-option\fR...] [\fIoption\fR...] [\ \fB\-N\fR\ |\ \fB\-\-exclude\-schema\fR\ \fIschema\fR\ ]... [\fIdbname\fR\ |\ \fB\-a\fR\ |\ \fB\-\-all\fR] .SH "توضیحات (DESCRIPTION)" .PP ابزار vacuumdb ابزاری برای پاک‌سازی یک پایگاه‌داده PostgreSQL است\&. همچنین vacuumdb آمارهای داخلی مورد استفاده بهینه‌ساز پرس‌وجوی PostgreSQL را تولید می‌کند\&. .PP دستور vacuumdb پوششی (wrapper) در راستای دستور اس‌کیوال \fBVACUUM\fR\& است\&. تفاوت موثری میان اجرای عملیات vacuum و تحلیل پایگاه‌های داده از طریق این ابزار و روش‌های دیگر دسترسی به سرور وجود ندارد\&. .SH "گزینه‌ها (OPTIONS)" .PP دستور vacuumdb آرگومان‌های خط فرمان زیر را می‌پذیرد: .PP \fB\-a\fR .br \fB\-\-all\fR .RS 4 تمام پایگاه‌های داده را vacuum می‌کند\&. .RE .PP \fB\-\-buffer\-usage\-limit \fR\fB\fIsize\fR\fR .RS 4 اندازه بافر حلقه‌ای Buffer Access Strategy را برای یک فراخوانی مشخص از vacuumdb تعیین می‌کند\&. از این اندازه برای محاسبه تعداد بافرهای اشتراکی که به عنوان بخشی از این استراتژی مجدداً استفاده می‌شوند، بهره گرفته می‌شود\&. \fBVACUUM\fR(7) را ببینید\&. .RE .PP \fB[\-d]\fR\fB \fR\fB\fIdbname\fR\fR .br \fB[\-\-dbname=]\fR\fB\fIdbname\fR\fR .RS 4 نام پایگاه‌داده‌ای که باید پاک‌سازی یا تحلیل شود را مشخص می‌کند، در صورتی که \fB\-a\fR/\fB\-\-all\fR استفاده نشده باشد\&. اگر این مقدار مشخص نشود، نام پایگاه‌داده از متغیر محیطی \fBPGDATABASE\fR خوانده می‌شود\&. اگر آن هم تنظیم نشده باشد، نام کاربری تعیین‌شده برای اتصال به کار می‌رود\&. مقدار \fIdbname\fR می‌تواند یک رشته اتصال (connection string) باشد\&. در این صورت، پارامترهای رشته اتصال هرگونه گزینه خط فرمان متناقض را بازنویسی خواهند کرد\&. .RE .PP \fB\-\-disable\-page\-skipping\fR .RS 4 صرف‌نظر کردن از صفحات بر اساس محتوای visibility map را غیرفعال می‌کند\&. .RE .PP \fB\-e\fR .br \fB\-\-echo\fR .RS 4 دستوراتی که vacuumdb تولید کرده و به سرور می‌فرستد را چاپ (echo) می‌کند\&. .RE .PP \fB\-f\fR .br \fB\-\-full\fR .RS 4 عملیات \(lqکامل\(rq (full) پاک‌سازی vacuum را انجام می‌دهد\&. .RE .PP \fB\-F\fR .br \fB\-\-freeze\fR .RS 4 تاپل‌ها را به شکل تهاجمی \(lqمنجمد\(rq (freeze) می‌کند\&. .RE .PP \fB\-\-force\-index\-cleanup\fR .RS 4 همواره مدخل‌های نمایه‌ای (index entries) که به تاپل‌های مرده اشاره می‌کنند را حذف می‌کند\&. .RE .PP \fB\-j \fR\fB\fInjobs\fR\fR .br \fB\-\-jobs=\fR\fB\fInjobs\fR\fR .RS 4 دستورهای vacuum یا analyze را با اجرای هم‌زمان \fInjobs\fR دستور، به صورت موازی اجرا می‌کند\&. این گزینه ممکن است زمان پردازش را کاهش دهد، اما بار کاری روی سرور پایگاه‌داده را نیز افزایش می‌دهد\&. .sp ابزار vacuumdb تعداد \fInjobs\fR اتصال به پایگاه‌داده باز خواهد کرد، بنابراین اطمینان حاصل کنید که مقدار تنظیم max_connections شما به اندازه کافی بالا باشد تا پاسخگوی همه اتصالات باشد\&. .sp توجه داشته باشید که استفاده از این حالت همراه با گزینه \fB\-f\fR (FULL) ممکن است در صورت پردازش موازی برخی کاتالوگ‌های سیستم، موجب خطاهای بن‌بست (deadlock) شود\&. .RE .PP \fB\-\-min\-mxid\-age \fR\fB\fImxid_age\fR\fR .RS 4 دستورهای vacuum یا analyze را تنها بر روی جدول‌هایی اجرا می‌کند که عمر multixact ID آن‌ها حداقل \fImxid_age\fR باشد\&. این تنظیم برای اولویت‌بندی جدول‌ها جهت پردازش و جلوگیری از سرریز (wraparound) شناسه multixact ID مفید است (بخش\ \&24.1.5.1 را ببینید)\&. .sp برای اهداف این گزینه، عمر multixact ID یک رابطه (relation)، بزرگ‌ترین مقدار میان عمر رابطه اصلی و جدول TOAST وابسته به آن (در صورت وجود) است\&. از آنجا که دستورهای صادرشده توسط vacuumdb در صورت لزوم جدول TOAST مربوط به رابطه را نیز پردازش خواهند کرد، نیازی نیست به طور جداگانه در نظر گرفته شود\&. .RE .PP \fB\-\-min\-xid\-age \fR\fB\fIxid_age\fR\fR .RS 4 دستورهای vacuum یا analyze را تنها بر روی جدول‌هایی اجرا می‌کند که عمر شناسه تراکنش (transaction ID) آن‌ها حداقل \fIxid_age\fR باشد\&. این تنظیم برای اولویت‌بندی جدول‌ها جهت پردازش و جلوگیری از سرریز (wraparound) شناسه تراکنش مفید است (بخش\ \&24.1.5 را ببینید)\&. .sp برای اهداف این گزینه، عمر transaction ID یک رابطه، بزرگ‌ترین مقدار میان عمر رابطه اصلی و جدول TOAST وابسته به آن (در صورت وجود) است\&. از آنجا که دستورهای صادرشده توسط vacuumdb در صورت لزوم جدول TOAST مربوط به رابطه را نیز پردازش خواهند کرد، نیازی نیست به طور جداگانه در نظر گرفته شود\&. .RE .PP \fB\-\-missing\-stats\-only\fR .RS 4 تنها رابطه‌هایی را تحلیل می‌کند که فاقد آمار برای یک ستون، عبارت نمایه‌ای (index expression) یا شیء آماری گسترش‌یافته (extended statistics object) هستند\&. هنگام استفاده همراه با \fB\-\-analyze\-in\-stages\fR، این گزینه مانع از این می‌شود که vacuumdb آمارهای موجود را موقتاً با آمارهایی که با اهداف آماری پایین‌تر تولید شده‌اند جایگزین کند؛ در نتیجه از انتخاب‌های موقتاً نامطلوب‌تر توسط بهینه‌ساز پرس‌وجو جلوگیری می‌شود\&. .sp این گزینه فقط می‌تواند همراه با \fB\-\-analyze\-only\fR یا \fB\-\-analyze\-in\-stages\fR استفاده شود\&..sp توجه داشته باشید که \fB\-\-missing\-stats\-only\fR به مجوزهای SELECT روی pg_statistic و pg_statistic_ext_data نیاز دارد، که به‌طور پیش‌فرض به مدیران سیستم (superusers) محدود شده است\&. .RE .PP \fB\-n \fR\fB\fIschema\fR\fR .br \fB\-\-schema=\fR\fB\fIschema\fR\fR .RS 4 فقط تمام جدول‌ها را در \fIschema\fR پاک‌سازی یا تحلیل کن\&. با نوشتن چندین سوئیچ \fB\-n\fR می‌توان چندین طرح‌واره (schema) را vacuum کرد\&. .RE .PP \fB\-N \fR\fB\fIschema\fR\fR .br \fB\-\-exclude\-schema=\fR\fB\fIschema\fR\fR .RS 4 هیچ جدولی را در \fIschema\fR پاک‌سازی یا تحلیل نکن\&. با نوشتن چندین سوئیچ \fB\-N\fR می‌توان چندین طرح‌واره را مستثنی کرد\&. .RE .PP \fB\-\-no\-index\-cleanup\fR .RS 4 مدخل‌های ایندکس که به تاپل‌های مرده (dead tuples) اشاره دارند را حذف نکن\&. .RE .PP \fB\-\-no\-process\-main\fR .RS 4 از رابطهٔ اصلی صرف‌نظر کن\&. .RE .PP \fB\-\-no\-process\-toast\fR .RS 4 از جدول TOAST مرتبط با جدولِ در حال vacuum (در صورت وجود) صرف‌نظر کن\&. .RE .PP \fB\-\-no\-truncate\fR .RS 4 صفحه‌های خالی در انتهای جدول را کوتاه (truncate) نکن\&. .RE .PP \fB\-P \fR\fB\fIparallel_workers\fR\fR .br \fB\-\-parallel=\fR\fB\fIparallel_workers\fR\fR .RS 4 تعداد کارگران موازی (parallel workers) را برای parallel vacuum مشخص می‌کند\&. این به vacuum اجازه می‌دهد تا از چندین پردازنده برای پردازش ایندکس‌ها بهره ببرد\&. ببینید: \fBVACUUM\fR(7)\&. .RE .PP \fB\-q\fR .br \fB\-\-quiet\fR .RS 4 پیام‌های پیشرفت کار را نمایش نده\&. .RE .PP \fB\-\-skip\-locked\fR .RS 4 از رابطه‌هایی که نمی‌توان بلافاصله برای پردازش قفل کرد، صرف‌نظر کن\&. .RE .PP \fB\-t \fR\fB\fItable\fR\fR\fB [ (\fR\fB\fIcolumn\fR\fR\fB [,\&.\&.\&.]) ]\fR .br \fB\-\-table=\fR\fB\fItable\fR\fR\fB [ (\fR\fB\fIcolumn\fR\fR\fB [,\&.\&.\&.]) ]\fR .RS 4 فقط \fItable\fR را پاک‌سازی یا تحلیل کن\&. نام ستون‌ها را تنها می‌توان در کنار گزینه‌های \fB\-\-analyze\fR یا \fB\-\-analyze\-only\fR تعیین کرد\&. با نوشتن چندین سوئیچ \fB\-t\fR می‌توان چندین جدول را vacuum کرد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br اگر ستون‌ها را مشخص کنید، احتمالاً باید پرانتزها را برای شل (shell) گریزدهی (escape) کنید\&. (مثال‌های زیر را ببینید\&.) .sp .5v .RE .RE .PP \fB\-v\fR .br \fB\-\-verbose\fR .RS 4 اطلاعات دقیق و مشروح را در طول پردازش چاپ کن\&. .RE .PP \fB\-V\fR .br \fB\-\-version\fR .RS 4 نسخهٔ vacuumdb را چاپ کرده و خارج شو\&. .RE .PP \fB\-z\fR .br \fB\-\-analyze\fR .RS 4 همچنین آمارها را برای استفاده توسط بهینه‌ساز (optimizer) محاسبه کن\&. .RE .PP \fB\-Z\fR .br \fB\-\-analyze\-only\fR .RS 4 تنها آمارها را برای استفاده توسط بهینه‌ساز محاسبه کن (بدون vacuum)\&. .RE .PP \fB\-\-analyze\-in\-stages\fR .RS 4 مانند \fB\-\-analyze\-only\fR تنها آمارها را برای استفاده توسط بهینه‌ساز محاسبه می‌کند (بدون vacuum)\&. تحلیل را در سه مرحله اجرا می‌کند؛ مرحلهٔ نخست از کمترین هدف آماری ممکن (ببینید: default_statistics_target) استفاده می‌کند تا آمارهای قابل استفاده را سریع‌تر تولید کند، و مراحل بعدی آمارهای کامل را می‌سازند\&. .sp این گزینه تنها برای تحلیل پایگاه داده‌ای مفید است که در حال حاضر هیچ آماری ندارد یا آمارهای آن کاملاً نادرست است؛ مانند زمانی که به تازگی از یک dump بازیابی شده یا توسط \fBpg_upgrade\fR ایجاد شده باشد\&. توجه داشته باشید که اجرای این گزینه در یک پایگاه داده با آمارهای موجود ممکن است به دلیل اهداف آماری پایین در مراحل ابتدایی، تصمیمات بهینه‌ساز پرس‌وجو را به‌طور موقت تضعیف کند\&. .RE .PP \fB\-?\fR .br \fB\-\-help\fR .RS 4 نمایش راهنما درباره آرگومان‌های خط فرمان vacuumdb و خروج\&. .RE .PP ابزار vacuumdb همچنین آرگومان‌های خط فرمان زیر را برای پارامترهای اتصال می‌پذیرد: .PP \fB\-h \fR\fB\fIhost\fR\fR .br \fB\-\-host=\fR\fB\fIhost\fR\fR .RS 4 نام میزبانِ ماشینی که سرور روی آن در حال اجرا است را مشخص می‌کند\&. اگر این مقدار با یک اسلش (ممیز) آغاز شود، به عنوان دایرکتوری سوکت دامنه یونیکس (Unix domain socket) استفاده می‌شود\&. .RE .PP \fB\-p \fR\fB\fIport\fR\fR .br \fB\-\-port=\fR\fB\fIport\fR\fR .RS 4 پورت TCP یا پسوند فایل سوکت دامنه یونیکس محلی را که سرور برای اتصالات به آن گوش می‌دهد مشخص می‌کند\&. .RE .PP \fB\-U \fR\fB\fIusername\fR\fR .br \fB\-\-username=\fR\fB\fIusername\fR\fR .RS 4 نام کاربری برای اتصال\&. .RE .PP \fB\-w\fR .br \fB\-\-no\-password\fR .RS 4 هرگز درخواست رمز عبور نشان داده نشود\&. اگر سرور نیازمند احراز هویت با رمز عبور باشد و رمز عبوری از راه‌های دیگر نظیر یک فایل \&.pgpass در دسترس نباشد، تلاش برای اتصال ناموفق خواهد بود\&. این گزینه می‌تواند در کارهای دسته‌ای (batch jobs) و اسکریپت‌هایی که هیچ کاربری برای وارد کردن رمز عبور در آن‌ها حضور ندارد، مفید باشد\&. .RE.PP \fB\-W\fR .br \fB\-\-password\fR .RS 4 اجبار vacuumdb به درخواست گذرواژه پیش از اتصال به یک پایگاه‌داده\&. .sp این گزینه هرگز ضروری نیست، چرا که اگر کارساز احراز هویت با گذرواژه را درخواست کند، vacuumdb به‌طور خودکار گذرواژه را درخواست خواهد کرد\&. با این حال، vacuumdb یک تلاش اتصال را برای پی بردن به اینکه کارساز گذرواژه می‌خواهد هدر خواهد داد\&. در برخی موارد برای جلوگیری از تلاش اتصال اضافی، وارد کردن \fB\-W\fR ارزشش را دارد\&. .RE .PP \fB\-\-maintenance\-db=\fR\fB\fIdbname\fR\fR .RS 4 هنگامی که \fB\-a\fR/\fB\-\-all\fR استفاده شود، برای جمع‌آوری فهرست پایگاه‌های داده جهت پاک‌سازی، به این پایگاه‌داده متصل می‌شود\&. اگر مشخص نشده باشد، از پایگاه‌دادهٔ postgres استفاده خواهد شد، یا اگر آن وجود نداشته باشد، از template1 استفاده می‌شود\&. این مقدار می‌تواند یک رشتهٔ اتصال (connection string) باشد\&. در این صورت، پارامترهای رشتهٔ اتصال بر هر گزینهٔ خط فرمانی که در تعارض باشد ارجحیت خواهند داشت\&. همچنین، پارامترهای رشتهٔ اتصال به جز خود نام پایگاه‌داده، هنگام اتصال به سایر پایگاه‌های داده نیز دوباره استفاده خواهند شد\&. .RE .SH "محیط (ENVIRONMENT)" .PP \fBPGDATABASE\fR .br \fBPGHOST\fR .br \fBPGPORT\fR .br \fBPGUSER\fR .RS 4 پارامترهای اتصال پیش‌فرض .RE .PP \fBPG_COLOR\fR .RS 4 مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر\&. مقادیر مجاز عبارتند از always، auto و never\&. .RE .PP این ابزار، مانند بیشتر ابزارهای دیگر PostgreSQL، از متغیرهای محیطی پشتیبانی‌شده توسط libpq نیز استفاده می‌کند (بخش\ \&32.15 را ببینید)\&. .SH "خطاها (DIAGNOSTICS)" .PP در صورت بروز مشکل، برای بررسی مشکلات احتمالی و پیام‌های خطا، به \fBVACUUM\fR(7) و \fBpsql\fR(1) مراجعه کنید\&. کارساز پایگاه‌داده باید روی میزبان هدف در حال اجرا باشد\&. همچنین، هرگونه تنظیمات اتصال پیش‌فرض و متغیرهای محیطی مورد استفاده توسط کتابخانهٔ فرانت‌اند libpq اعمال خواهند شد\&. .SH "مثال‌ها (EXAMPLES)" .PP برای پاک‌سازی پایگاه‌دادهٔ test: .sp .if n \{\ .RS 4 .\} .nf $ \fBvacuumdb test\fR .fi .if n \{\ .RE .\} .PP برای پاک‌سازی و تحلیل برای بهینه‌ساز در پایگاه‌داده‌ای به نام bigdb: .sp .if n \{\ .RS 4 .\} .nf $ \fBvacuumdb \-\-analyze bigdb\fR .fi .if n \{\ .RE .\} .PP برای پاک‌سازی یک جدول تکی foo در پایگاه‌داده‌ای به نام xyzzy، و تحلیل یک ستون تکی bar از آن جدول برای بهینه‌ساز: .sp .if n \{\ .RS 4 .\} .nf $ \fBvacuumdb \-\-analyze \-\-verbose \-\-table=\*(Aqfoo(bar)\*(Aq xyzzy\fR .fi .if n \{\ .RE .\} .PP برای پاک‌سازی تمام جدول‌ها در شِماهای (schemas) foo و bar در پایگاه‌داده‌ای به نام xyzzy: .sp .if n \{\ .RS 4 .\} .nf $ \fBvacuumdb \-\-schema=\*(Aqfoo\*(Aq \-\-schema=\*(Aqbar\*(Aq xyzzy\fR .fi .if n \{\ .RE .\}.SH "همچنین ببینید (SEE ALSO)" \fBVACUUM\fR(7)