
به اشتراک بگذارید
آموزش وردپرس | بلاگ وبداده
بهینهسازی دیتابیس وردپرس با حذف رونوشتها و ریویژنها
- ریشهی سنگینی: رونوشتها و ذخیرههای خودکار که وردپرس بهصورت پیشفرض بینهایت نگه میدارد و هر کدام یک کپی کامل از پست است.
- روش امن و پیشنهادی: استفاده از افزونهای مثل WP-Optimize با پیشنمایش، زمانبندی و امکان بازگشت.
- روش پیشرفته: اجرای کوئری SQL در phpMyAdmin یا دستور WP-CLI، فقط پس از گرفتن بکاپ کامل.
- پیشگیری: محدودکردن تعداد رونوشتها با یک خط در فایل wp-config.php.
- واقعیت صادقانه: این کار برای سایتهای قدیمی و پرمحتوا سود محسوس دارد؛ روی سایت کوچک تأثیر سرعت کم است.
در یک نگاه
بهینهسازی دیتابیس وردپرس چیست و چرا مهم است؟
- رونوشتها (Revisions): هر بار که یک نوشته را ذخیره میکنید، وردپرس یک نسخهی کامل از آن را بهعنوان رونوشت نگه میدارد. این رونوشتها در جدول
wp_postsبا نوعrevisionذخیره میشوند و بهصورت پیشفرض هیچ محدودیتی روی تعدادشان نیست. - ذخیرههای خودکار (Autosave): وردپرس حین ویرایش، تقریباً هر ۶۰ ثانیه یکبار نسخهی خودکار میسازد.
- محتوای زبالهدان و اسپم: نوشتهها و نظرهای پاکشده تا مدتی در زبالهدان میمانند و جا اشغال میکنند.
- ترنزینتهای منقضی (Transients): کشهای موقتی که افزونهها میسازند و بعضیشان پس از انقضا در جدول
wp_optionsباقی میمانند. - جدولهای یتیم: دادههایی که از افزونههای حذفشده جا ماندهاند.
چرا رونوشتها اینقدر جا میگیرند؟

مقایسهی سه روش پاکسازی: افزونه، کوئری SQL و WP-CLI
| روش | مناسب چه کسی | ریسک | امکان زمانبندی | نیاز به بکاپ |
|---|---|---|---|---|
| افزونه (مثل WP-Optimize) | همه، بهویژه تازهکارها | کم | بله، خودکار | توصیهشده |
| کوئری SQL در phpMyAdmin | کاربر متوسط تا حرفهای | متوسط تا بالا | خیر (دستی) | الزامی |
| دستور WP-CLI | توسعهدهنده / مدیر سرور | متوسط | با کرانجاب | الزامی |
جمعبندی جدول
روش امن و پیشنهادی: پاکسازی با افزونه بهصورت گامبهگام
قبل از شروع: یک بکاپ سالم بگیرید
قدم اول: افزونهی بهینهساز را نصب و فعال کنید
قدم دوم: پیش از حذف، پیشنمایش بگیرید

قدم سوم: پاکسازی را زمانبندی کنید
قدم چهارم: جلوی انباشت رونوشتها را از ریشه بگیرید
wp-config.php میتوانید تعداد رونوشتهای هر نوشته را محدود کنید. این فایل را از طریق مدیر فایل هاست یا FTP باز کنید و کدهای زیر را پیش از خط «That’s all, stop editing!» قرار دهید:// محدودکردن تعداد ریویژنها به ۵ نسخهی اخیر برای هر پست
// این خط را پیش از خط «That's all, stop editing!» در فایل wp-config.php قرار دهید
define( 'WP_POST_REVISIONS', 5 );
// برای غیرفعالکردن کامل ریویژنها (فقط آخرین ذخیرهی خودکار باقی میماند):
// define( 'WP_POST_REVISIONS', false );
// افزایش فاصلهی زمانی ذخیرهی خودکار از ۶۰ به ۱۸۰ ثانیه
define( 'AUTOSAVE_INTERVAL', 180 );PHPنکته دربارهی این تنظیم
روش پیشرفته: حذف رونوشتها با کوئری SQL در phpMyAdmin
-- پیش از اجرا حتماً از دیتابیس بکاپ بگیرید
-- پیشوند wp_ را با پیشوند واقعی جدولهای سایت خود جایگزین کنید
-- ۱) حذف تمام ریویژنهای ذخیرهشده
DELETE FROM wp_posts WHERE post_type = 'revision';
-- ۲) پاکسازی متادیتای یتیمِ باقیمانده
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
-- ۳) بازپسگیری فضای آزادشده و بهینهسازی جدول
OPTIMIZE TABLE wp_posts;SQLپیشوند جدول را فراموش نکنید
wp_ است، اما بهدلایل امنیتی ممکن است چیز دیگری (مثل wpxy_) باشد. حتماً پیشوند واقعی سایت خود را در کوئری جایگزین کنید؛ اجرای کوئری با پیشوند اشتباه یا روی دیتابیس اشتباه میتواند دردسرساز شود.OPTIMIZE TABLE در انتهای کوئری، فضای خالیشده پس از حذف ردیفها را بازپس میگیرد و جدول را مرتب میکند. اگر ترجیح میدهید همهچیز را از خط فرمان مدیریت کنید و به سرور دسترسی SSH دارید، ابزار رسمی WP-CLI هم همین کار را سادهتر انجام میدهد:# شمارش ریویژنهای موجود پیش از حذف
wp post list --post_type=revision --format=count
# حذف همهی ریویژنها بهصورت یکجا
wp post delete $(wp post list --post_type=revision --format=ids) --force
# بهینهسازی و بازپسگیری فضای دیتابیس
wp db optimizeBashاشتباهات رایج و معایبی که باید صادقانه بدانید
OPTIMIZE TABLE روی جدولهای بزرگ ممکن است چند لحظه جدول را قفل کند، پس بهتر است در ساعت کمترافیک اجرا شود. و در نهایت، حذف ترنزینتها بیخطر است اما بلافاصله پس از آن، تا زمانی که کشها دوباره ساخته شوند، کمی فشار روی دیتابیس بیشتر میشود.نقلقول از مستندات گوگل دربارهی سرعت و رتبه
میزبانی سریع وردپرس و پشتیبانی وبداده
✅ دیتاسنترهای متنوع در ایران، هلند و آلمان برای انتخاب نزدیکترین لوکیشن به کاربران.
✅ کنترلپنل سیپنل بههمراه phpMyAdmin و ابزار بکاپ برای مدیریت و پاکسازی آسان دیتابیس.
✅ پشتیبانی فنی ۲۴ ساعته برای کمک در گرفتن بکاپ، اجرای کوئری و بهینهسازی جدولها.
تجربهی پشتیبانی وبداده
پرسشهای پرتکرار درباره پاکسازی دیتابیس وردپرس
آیا حذف رونوشتها به محتوای منتشرشدهی سایت آسیب میزند؟
خیر. رونوشتها فقط نسخههای تاریخیِ ذخیرهشده از یک نوشته هستند و ربطی به نسخهی منتشرشدهی فعلی ندارند. با حذف آنها محتوای زندهی سایت دستنخورده میماند؛ تنها چیزی که از دست میرود امکان بازگشت به نسخههای قبلیِ همان نوشته است. با این حال، پیش از هر پاکسازی گرفتن بکاپ همیشه توصیه میشود.
هر چند وقت یکبار باید دیتابیس را بهینه کنم؟
برای بیشتر سایتها یک پاکسازی هفتگی یا ماهانه کافی است. اگر سایت پرمحتوا و فعالی دارید که روزانه چند نوشته منتشر یا ویرایش میشود، زمانبندی هفتگی مناسبتر است. برای سایتهای کمفعالیت، ماهی یکبار هم کفایت میکند. مهم این است که این کار مرتب و خودکار انجام شود.
تفاوت رونوشت (Revision) و ذخیرهی خودکار (Autosave) چیست؟
رونوشت نسخهای است که هنگام ذخیرهی دستیِ نوشته ساخته میشود و میتواند تعداد زیادی از آن جمع شود. ذخیرهی خودکار نسخهای موقتی است که وردپرس تقریباً هر ۶۰ ثانیه حین ویرایش میسازد و روی خودش بازنویسی میشود، پس معمولاً فقط یکی از آن برای هر نوشته میماند. هر دو در پاکسازی دیتابیس هدف قرار میگیرند.
محدودکردن رونوشتها بهتر است یا حذف کامل آنها؟
محدودکردن معمولاً انتخاب متعادلتری است. با گذاشتن مقداری مثل ۵ در WP_POST_REVISIONS، هم جلوی انباشت بیرویه را میگیرید و هم چند نسخهی اخیر را برای بازگشت احتمالی نگه میدارید. حذف کامل (مقدار false) فقط برای سایتهایی منطقی است که اصلاً به تاریخچهی ویرایش نیاز ندارند.
کوئری SQL را اجرا کردم اما حجم دیتابیس کم نشد، چرا؟
حذف ردیفها لزوماً بلافاصله فضا را آزاد نمیکند؛ باید بعد از حذف، دستور OPTIMIZE TABLE را اجرا کنید تا فضای خالی بازپس گرفته شود و جدول مرتب گردد. در موتور InnoDB این کار جدول را بازسازی میکند. اگر باز هم تغییری ندیدید، مطمئن شوید کوئری روی دیتابیس و پیشوند درست اجرا شده است.
آیا ترنزینتها را هم پاک کنم؟ خطری ندارد؟
پاککردن ترنزینتهای منقضی بیخطر است. ترنزینتها کشهای موقتی هستند که وردپرس و افزونهها در صورت نیاز دوباره میسازند. تنها اثر جانبی این است که بلافاصله پس از حذف، تا زمانی که کشها دوباره ساخته شوند، چند کوئری اضافه به دیتابیس زده میشود که کاملاً عادی است و سایت را نمیشکند.
بدون افزونه و بدون SQL هم میشود دیتابیس را بهینه کرد؟
بله، تا حدی. میتوانید با محدودکردن رونوشتها در wp-config.php و خالیکردن مرتب زبالهدان نوشتهها و نظرها، از انباشت جلوگیری کنید. اما برای پاکسازی دادههای قدیمیِ موجود و بهینهسازی واقعی جدولها، در نهایت به یکی از دو روش افزونه یا کوئری نیاز خواهید داشت.
بهینهسازی دیتابیس واقعاً سرعت سایت را زیاد میکند؟
بستگی به وضعیت سایت دارد. برای سایتی قدیمی با هزاران رونوشت و جدولهای شلوغ، پاکسازی میتواند زمان پاسخ دیتابیس و بارگذاری صفحه را محسوس بهتر کند. اما برای سایت کوچک و تازه، تأثیر آن کم است. بهینهسازی دیتابیس یکی از چند عامل سرعت است و در کنار کش، فشردهسازی و میزبانی خوب معنا پیدا میکند.
اگر روی هاست اشتراکی هستم و به تنظیمات پیشرفته دسترسی ندارم چه کنم؟
روی هاستهای اشتراکی معمولاً به phpMyAdmin از داخل کنترلپنل (مثل سیپنل) دسترسی دارید و میتوانید کوئری اجرا کنید یا از افزونه استفاده کنید. اگر به فایل wp-config.php هم دسترسی ندارید یا مطمئن نیستید، سادهترین و امنترین راه استفاده از افزونه است؛ در صورت تردید هم میتوانید از پشتیبانی هاست کمک بگیرید.
جمعبندی و چکلیست نهایی
چکلیست سریع بهینهسازی دیتابیس
✅ برای شروع امن، از افزونهای مثل WP-Optimize با پیشنمایش استفاده کنید.
✅ رونوشتها، ذخیرههای خودکار، زبالهدان و ترنزینتهای منقضی را پاک کنید.
✅ پاکسازی را هفتگی یا ماهانه زمانبندی خودکار کنید.
✅ با WP_POST_REVISIONS در wp-config.php جلوی انباشت دوباره را بگیرید.
✅ روش SQL/WP-CLI را فقط با بکاپ و پیشوند درست جدول اجرا کنید.



