
به اشتراک بگذارید
آموزش وردپرس | بلاگ وبداده
پاکسازی و بهینهسازی دیتابیس وردپرس برای افزایش سرعت
wp_posts و wp_options پر از ریویژن، ترنزینت منقضی و متادیتای یتیم میشوند و همینها زمان پاسخ سرور و سرعت بارگذاری را بالا میبرند. در این مقاله دو رویکرد پاکسازی را کنار هم میگذاریم و کد و مراحل دقیق هرکدام را میبینید تا خودتان بیخطر اجرا کنید.- دو روش اصلی: افزونهی آماده مثل WP-Optimize (ساده) یا پاکسازی دستی با SQL و WP-CLI (سریع و دقیق).
- چه چیزی پاک میشود: ریویژنها، پیشنویس خودکار، سطل زباله، نظرات اسپم، ترنزینت منقضی و متادیتای یتیم.
- چرا سرعت بالا میرود: جدول کوچکتر و کاهش دادهی autoload یعنی کوئری سریعتر و TTFB کمتر.
- قدم حیاتی: پیش از هر پاکسازی، بکاپ کامل دیتابیس بگیرید؛ عملیات SQL برگشتناپذیر است.
- گام تکمیلی: با ثابت
WP_POST_REVISIONSجلوی انباشت دوبارهی ریویژن را بگیرید.
در یک نگاه
بهینه سازی دیتابیس وردپرس چیست و چرا سرعت را بالا میبرد؟
- ریویژن پستها: هر ذخیره یک نسخهی جدید در جدول
wp_postsمیسازد؛ یک نوشته میتواند دهها ریویژن داشته باشد. - ترنزینتهای منقضی: دادههای موقتِ افزونهها که تاریخشان گذشته اما در جدول
wp_optionsباقی ماندهاند. - نظرات اسپم و زباله: صدها نظر اسپم که هرگز تأیید نمیشوند ولی جا اشغال میکنند.
- متادیتای یتیم: ردیفهایی در
wp_postmetaکه پست والدشان حذف شده و بیصاحب ماندهاند. - دادهی autoload زیاد: آپشنهایی که در هر بار بارگذاری صفحه در حافظه لود میشوند، حتی وقتی لازم نیستند.
گلوگاه واقعی: دادهی autoload

افزونه یا روش دستی؟ مقایسهی دو رویکرد
| معیار | افزونه (مثل WP-Optimize) | روش دستی (SQL / WP-CLI) |
|---|---|---|
| سطح مهارت لازم | مبتدی | متوسط تا پیشرفته |
| نیاز به دسترسی SSH | ندارد | برای WP-CLI بله (SQL از phpMyAdmin هم میشود) |
| سرعت اجرا روی سایت بزرگ | متوسط | بسیار سریع |
| ریسک خطای انسانی | کم | متوسط تا زیاد (کوئری اشتباه) |
| زمانبندی خودکار پاکسازی | دارد | با کرونجاب باید خودتان بسازید |
| کنترل دقیق روی دادهها | متوسط | کامل |
| بار اضافه روی سایت | یک افزونهی نصبشده | بدون افزونهی دائمی |
جمعبندی مقایسه
روش اول: پاکسازی با افزونه (ساده و بدون کد)
- ابتدا از دیتابیس بکاپ کامل بگیرید (این مهمترین قدم است).
- از پیشخوان وردپرس به «افزونهها ← افزودن» بروید و
WP-Optimizeرا جستوجو، نصب و فعال کنید. - به منوی «WP-Optimize ← Database» بروید؛ فهرست موارد قابل پاکسازی را میبینید.
- فقط تیک موارد مطمئن (ریویژن، ترنزینت منقضی، اسپم) را بزنید و در ابتدا از پاکسازیهای علامتگذاریشده با هشدار پرهیز کنید.
- روی «Run optimization» بزنید و در پایان میتوانید پاکسازی خودکار هفتگی را زمانبندی کنید.
همیشه اول بکاپ بگیرید

روش دوم: پاکسازی دستی با SQL و WP-CLI
گام ۱: پاکسازی دادههای زائد با SQL
wp_ فرض شده؛ اگر سایت شما پیشوند دیگری دارد آن را جایگزین کنید:-- پیش از اجرا، حتماً از دیتابیس بکاپ کامل بگیرید (این دستورها برگشتناپذیرند)
-- پیشوند جدولها اینجا wp_ فرض شده؛ اگر سایت شما پیشوند دیگری دارد، آن را جایگزین کنید
-- ۱) حذف همهی ریویژنهای پستها
DELETE FROM wp_posts WHERE post_type = 'revision';
-- ۲) حذف پیشنویسهای خودکار (auto-draft)
DELETE FROM wp_posts WHERE post_status = 'auto-draft';
-- ۳) خالیکردن سطل زباله (پستها و برگههای حذفشده)
DELETE FROM wp_posts WHERE post_status = 'trash';
-- ۴) حذف نظرات اسپم و نظرات در سطل زباله
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';
-- ۵) حذف متادیتای یتیم (postmeta بدون پست والد)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
-- ۶) حذف ترنزینتهای منقضی و موقتِ جامانده در جدول options
DELETE FROM wp_options WHERE option_name LIKE '\_transient_%';
DELETE FROM wp_options WHERE option_name LIKE '\_site_transient_%';SQLیک کوئری اشتباه، دردسر بزرگ
گام ۲: فشردهسازی جدولها (OPTIMIZE TABLE)
گام ۳: پاکسازی سریع با WP-CLI
# اگر به SSH و WP-CLI دسترسی دارید، پاکسازی خیلی سریعتر و امنتر انجام میشود
# ابتدا وارد پوشهی اصلی وردپرس شوید
cd /home/user/public_html
# حذف تمام ریویژنها
wp post delete $(wp post list --post_type=revision --format=ids) --force
# حذف ترنزینتهای منقضیشده
wp transient delete --expired
# اجرای بهینهسازی (OPTIMIZE TABLE) روی کل جدولهای دیتابیس
wp db optimizeBashwp transient delete --expired طبق مستندات رسمی WP-CLI فقط ترنزینتهای منقضی را حذف میکند و به دادهی سالم دست نمیزند. دستور wp db optimize هم معادل اجرای OPTIMIZE روی همهی جدولهای دیتابیس است.گام ۴: جلوگیری از انباشت دوبارهی ریویژن
WP_POST_REVISIONS به فایل wp-config.php تعداد ریویژن هر نوشته را محدود کنید. طبق مستندات وردپرس، ریویژنهای قدیمیِ مازاد هنگام آپدیت بعدیِ همان نوشته خودکار حذف میشوند:// محدود کردن تعداد ریویژنها تا جدول wp_posts دوباره شلوغ نشود
// این خط را در فایل wp-config.php، بالای خط "That's all, stop editing!" اضافه کنید
// نگهداشتن فقط ۵ ریویژن آخر برای هر نوشته
define( 'WP_POST_REVISIONS', 5 );
// برای غیرفعالکردن کامل ریویژنها (فقط یک autosave میماند):
// define( 'WP_POST_REVISIONS', false );
// فاصلهی ذخیرهی خودکار (autosave) را هم میتوانید بیشتر کنید (بر حسب ثانیه)
define( 'AUTOSAVE_INTERVAL', 120 );PHPاین تنظیم فقط روی آینده اثر دارد
محدودیتها و نکات صادقانهای که باید بدانید
- سود همیشه چشمگیر نیست: اگر دیتابیس شما تازه است یا سایت کوچکی دارید، تفاوت سرعت پس از پاکسازی ممکن است ناچیز باشد.
- OPTIMIZE بیهزینه نیست: طبق مستندات MySQL، این عملیات به فضای دیسک آزاد نیاز دارد و در لحظهای کوتاه جدول را قفل میکند؛ روی سایت پرترافیک آن را در ساعت کمبازدید اجرا کنید.
- حذف ریویژن یعنی از دست دادن تاریخچه: اگر عادت دارید نسخههای قبلی نوشته را بازیابی کنید، حذف کامل ریویژنها این امکان را میگیرد؛ محدودکردن بهتر از حذف کامل است.
- ریشهی کندی جای دیگری است: اگر مشکل از قالب سنگین، افزونهی بد یا هاست ضعیف باشد، پاکسازی دیتابیس آن را حل نمیکند.
نقلقول از مستندات رسمی MySQL
میزبانی وردپرس سریع روی هاست وبداده
✅ دیتاسنترهای متنوع در ایران، هلند و آلمان برای انتخاب نزدیکترین لوکیشن به کاربران شما.
✅ دسترسی به phpMyAdmin و ابزار بکاپ برای پاکسازی امن دیتابیس و بازگشت سریع در صورت خطا.
✅ پشتیبانی فنی ۲۴ ساعته برای کمک در اجرای کوئری، تنظیم WP-CLI و رفع مشکلات دیتابیس.
تجربهی پشتیبانی وبداده
پرسشهای پرتکرار دربارهی پاکسازی دیتابیس وردپرس
هر چند وقت یکبار باید دیتابیس وردپرس را پاکسازی کنم؟
بستگی به میزان فعالیت سایت دارد. برای یک سایت معمولی، ماهی یک بار کافی است. اگر سایت پرمحتوا یا فروشگاهی دارید که مدام بهروزرسانی میشود، پاکسازی هفتگی خودکار با افزونه گزینهی خوبی است. مهمتر از تکرار زیاد، محدودکردن ریویژنها برای جلوگیری از انباشت دوباره است.
آیا پاکسازی دیتابیس واقعاً سرعت سایت را زیاد میکند؟
روی سایتهای شلوغ و قدیمی، بله؛ جدول کوچکتر و کاهش دادهی autoload باعث کوئری سریعتر و کاهش زمان پاسخ سرور میشود. اما اگر دیتابیس شما تازه و کوچک است، تفاوت ممکن است ناچیز باشد. پاکسازی دیتابیس یکی از عوامل سرعت است، نه تنها عامل آن.
پاکسازی دیتابیس خطرناک است؟ ممکن است سایتم خراب شود؟
اگر با افزونه و فقط روی موارد امن (ریویژن، ترنزینت منقضی، اسپم) کار کنید، ریسک بسیار کم است. در روش دستی با SQL، یک کوئری اشتباه میتواند دردسرساز شود. در هر دو حالت، تنها بیمهی واقعی شما بکاپ کامل دیتابیس پیش از هر اقدام است.
ریویژنها را کامل حذف کنم یا فقط محدودشان کنم؟
محدودکردن معمولاً بهتر است. با WP_POST_REVISIONS میتوانید مثلاً فقط ۵ ریویژن آخر را نگه دارید؛ اینطور هم جدول سبک میماند و هم امکان بازگشت به نسخههای اخیر را از دست نمیدهید. حذف کامل فقط وقتی منطقی است که هرگز به تاریخچهی نوشتهها نیاز ندارید.
تفاوت پاکسازی دادهها با OPTIMIZE TABLE چیست؟
پاکسازی یعنی حذف ردیفهای زائد (ریویژن، اسپم و…). اما بعد از حذف، فضای خالی داخل جدول باقی میماند. OPTIMIZE TABLE این فضای خالی را آزاد و داده را یکپارچه میکند. برای بهترین نتیجه، اول پاکسازی و بعد OPTIMIZE را انجام دهید.
بدون دسترسی SSH هم میتوانم دیتابیس را دستی پاک کنم؟
بله. WP-CLI به SSH نیاز دارد، اما کوئریهای SQL را میتوانید از phpMyAdmin در کنترلپنل هاست (مثل سیپنل) اجرا کنید. کافی است وارد phpMyAdmin شوید، دیتابیس سایت را انتخاب و کوئریها را در تب SQL اجرا کنید. باز هم اول بکاپ بگیرید.
دادهی autoload چیست و چطور آن را کم کنم؟
autoload به آپشنهایی گفته میشود که در هر بار بارگذاری صفحه در حافظه لود میشوند. اگر حجمشان زیاد شود سایت را کند میکنند. افزونههای حذفشده اغلب آپشن autoload بهجا میگذارند. میتوانید با کوئری روی wp_options آپشنهای بزرگِ بیمصرف را پیدا و پاک کنید؛ از وردپرس 6.6 «سلامت سایت» هم دربارهی حجم زیاد autoload هشدار میدهد.
بعد از پاکسازی، سرعت سایتم تغییری نکرد؛ مشکل کجاست؟
احتمالاً ریشهی کندی جای دیگری است: قالب سنگین، افزونهی بد، نبود کش یا هاست ضعیف. پاکسازی دیتابیس فقط یک لایه از سرعت است. سراغ فعالکردن کش، بهینهسازی تصاویر و در صورت نیاز ارتقای هاست بروید تا نتیجهی محسوس بگیرید.
افزونهی پاکسازی را بعد از کار غیرفعال کنم؟
اگر از زمانبندی خودکار استفاده میکنید، باید فعال بماند تا کارش را انجام دهد. اگر فقط یک بار پاکسازی کردهاید و نگران تعداد افزونهها هستید، میتوانید آن را غیرفعال یا حذف کنید و دفعهی بعد دوباره نصبش کنید. افزونهی غیرفعال معمولاً روی سرعت اثری ندارد.



