SHET23

5 افزونه برای مدیریت دیتابیس وردپرس و بهینه‌سازی آن

5 افزونه برای مدیریت دیتابیس وردپرس و بهینه‌سازی آن

یه سایت وردپرسی رو تصور کنید که سه چهار سال ازش گذشته. ده‌ها افزونه روش نصب و حذف شده، صدها پست منتشر شده و هر پست هم ده‌بار ویرایش شده، هزاران نظر اسپم گرفته و پاک شده. از بیرون همه‌چیز مرتب به نظر میاد؛ ولی پشت صحنه، دیتابیس همون سایت داره زیر بار داده‌هایی نفس‌نفس می‌زنه که هیچ‌کس دیگه بهشون کاری نداره.

پایگاه داده یا همون دیتابیس، جایی‌ه که تمام هویت سایت شما توش ذخیره می‌شه: پست‌ها، صفحات، محصولات، نظرات، کاربران، تنظیمات قالب و افزونه‌ها. اگه فایل‌های وردپرس رو اسکلت ساختمون بدونیم، دیتابیس همون تأسیسات و سیم‌کشی‌شه. خرابی توی این بخش یعنی چراغ کل ساختمون خاموش.

توی این مقاله می‌خوایم ۵ افزونه برتر مدیریت و بهینه‌سازی دیتابیس وردپرس رو با جدیدترین وضعیتشون بررسی کنیم، بهتون بگیم کدوم برای چه نوع سایتی مناسبه، و مهم‌تر از اون، یاد بگیرید چرا دیتابیستون شلوغ می‌شه تا از اول جلوی شلوغ شدنش رو بگیرید.

آنچه در این مقاله می‌خوانید

دیتابیس وردپرس دقیقاً چیه و چی توش ذخیره می‌شه؟

وردپرس موقع نصب، حدود ۱۲ جدول اصلی توی MySQL (یا MariaDB) می‌سازه. مهم‌ترین‌هاشون اینان:

  • wp_posts — پست‌ها، صفحات، محصولات، فایل‌های رسانه، منوها و… همه اینجان.
  • wp_postmeta — اطلاعات اضافی هر پست. معمولاً بزرگ‌ترین و شلوغ‌ترین جدول سایت شماست، مخصوصاً اگه از صفحه‌ساز یا سئو پلاگین استفاده می‌کنید.
  • wp_options — تنظیمات وردپرس، قالب و افزونه‌ها. کوچیک به نظر می‌رسه ولی می‌تونه بزرگ‌ترین دردسر عملکردی سایت باشه (کمی جلوتر توضیح می‌دم چرا).
  • wp_comments و wp_commentmeta — نظرات و متادیتای اون‌ها.
  • wp_users و wp_usermeta — کاربران و رمزهای عبور هش‌شده.
  • wp_terms، wp_termmeta، wp_term_taxonomy، wp_term_relationships — دسته‌ها، برچسب‌ها و ارتباطشون با محتوا.

تا اینجاش استاندارده. ماجرا از جایی شروع می‌شه که افزونه‌ها هم جدول خودشون رو اضافه می‌کنن. یه سایت ووکامرسی معمولی راحت می‌تونه ۵۰ تا ۸۰ جدول داشته باشه. و وقتی افزونه‌ای رو حذف می‌کنید، خیلی وقت‌ها اون جدول‌ها همون‌جا باقی می‌مونن.

یه نکته که کم گفته می‌شه: تصاویر و فایل‌های شما توی دیتابیس ذخیره نمی‌شن. اون‌ها توی پوشه wp-content/uploads روی هاست هستن. پس اگه دیتابیستون ۸۰۰ مگابایت شده، مطمئن باشید تقصیر عکس‌ها نیست!

چرا دیتابیس وردپرس به مرور زمان سنگین و کند می‌شه؟

دیتابیس مثل کشوی میز کار می‌مونه. هر روز یه چیزی بهش اضافه می‌کنید، ولی تقریباً هیچ‌وقت چیزی ازش بیرون نمی‌ندازید. اینا مقصرهای اصلی هستن:

نسخه‌های پیشین پست‌ها (Post Revisions)

وردپرس به‌صورت پیش‌فرض هیچ محدودیتی برای تعداد نسخه‌های ذخیره‌شده نداره. یعنی اگه یه مقاله رو ۴۰ بار ویرایش کنید، ۴۰ ردیف کامل توی wp_posts دارید که هرکدوم متادیتای خودشون رو هم توی wp_postmeta ساختن. روی سایتی با ۵۰۰ مقاله، این یعنی چند هزار ردیف بی‌مصرف.

Transient های منقضی‌شده

ترنزینت‌ها داده‌های موقتی هستن که افزونه‌ها برای کش کردن نتایج استفاده می‌کنن؛ مثلاً نتیجه یه درخواست API. قراره بعد از انقضا حذف بشن، ولی وردپرس فقط موقعی پاکشون می‌کنه که دوباره بهشون سر بزنه. افزونه‌های بی‌کیفیت هزاران ترنزینت مرده توی wp_options جا می‌ذارن.

گزینه‌های autoload — قاتل خاموش سرعت

این مورد رو با دقت بخونید، چون واقعاً مهمه. هر ردیف توی جدول wp_options یه ستون به اسم autoload داره. اگه مقدارش yes باشه، وردپرس توی هر بار بارگذاری هر صفحه اون داده رو می‌خونه و توی حافظه می‌ریزه — حتی اگه هیچ‌وقت ازش استفاده نشه.

یه نصب تمیز وردپرس حدود ۱۰۰ تا ۱۵۰ کیلوبایت داده autoload داره. ولی سایت‌هایی دیدیم که این عدد به ۵ یا ۱۰ مگابایت رسیده. یعنی هر بازدیدکننده، هر بار، ۱۰ مگابایت داده بی‌مصرف رو از دیتابیس می‌کشه بیرون. خوشبختانه از وردپرس ۶.۶ به بعد، هسته وردپرس مقادیر خیلی بزرگ رو به‌صورت خودکار از autoload خارج می‌کنه، ولی داده‌های قدیمی همچنان سر جاشون هستن.

متادیتای یتیم (Orphaned Metadata)

وقتی یه پست رو برای همیشه حذف می‌کنید، خیلی وقت‌ها ردیف‌های wp_postmeta مربوط بهش می‌مونن. حالا شما متایی دارید که به هیچ پستی وصل نیست. همین اتفاق برای کاربران حذف‌شده و نظرات هم می‌افته.

جداول و کرون‌جاب‌های متروک

افزونه‌ای رو نصب کردید، خوشتون نیومد، حذفش کردید. جدولش موند. کرون‌جابی که ثبت کرده بود هم موند و وردپرس هر روز داره یه تابع ناموجود رو صدا می‌زنه.

جدول Action Scheduler (مخصوص ووکامرسی‌ها)

اگه فروشگاه ووکامرس دارید، حتماً جدول wp_actionscheduler_actions رو چک کنید. این جدول کارهای زمان‌بندی‌شده رو نگه می‌داره و روی فروشگاه‌های شلوغ به‌راحتی به چند صد هزار ردیف می‌رسه. توی خیلی از فروشگاه‌هایی که برای عیب‌یابی سرعت بررسی کردیم، بزرگ‌ترین جدول دیتابیس همین بوده، نه جدول سفارش‌ها.

⚠️ قبل از هر کاری، بک‌آپ بگیرید. این جمله رو همه می‌نویسن و همه هم ردش می‌کنن. ولی جدی می‌گیم: عملیات پاکسازی دیتابیس برگشت‌پذیر نیست. یه بک‌آپ کامل بگیرید، دانلودش کنید روی سیستم خودتون، بعد شروع کنید.

نگاه سریع به ۵ افزونه

افزونهکار اصلینصب فعالسطح کاربر
WP-Optimizeبهینه‌سازی + کش + فشرده‌سازی تصویر+۱ میلیونمبتدی تا حرفه‌ای
Advanced Database Cleanerپاکسازی عمیق و تخصصی+۱۰۰ هزارمتوسط به بالا
WP-DBManagerمدیریت، تعمیر و اجرای SQL+۷۰ هزارحرفه‌ای
UpdraftPlusپشتیبان‌گیری و بازیابی+۳ میلیونهمه
BackWPupپشتیبان‌گیری + تعمیر دیتابیس+۵۰۰ هزارمتوسط

آمار بر اساس مخزن رسمی وردپرس در زمان نگارش این مقاله.

WP-Optimize

اگه فقط قراره یه افزونه نصب کنید و بیشتر از این وقت نذارید، جواب همینه. افزونه WP-Optimize با بیش از یک میلیون نصب فعال و امتیاز ۴.۸ از ۵، محبوب‌ترین ابزار بهینه‌سازی دیتابیس وردپرسه.

افزونه WP-Optimize
افزونه WP-Optimize

یه نکته جالب که خیلی‌ها نمی‌دونن: WP-Optimize و UpdraftPlus هر دو محصول یه تیم هستن (تیم TeamUpdraft به سرپرستی David Anderson). برای همین اگه هر دوش رو نصب کنید، قشنگ با هم هماهنگ کار می‌کنن و WP-Optimize می‌تونه قبل از پاکسازی، خودکار از UpdraftPlus بخواد بک‌آپ بگیره. این هماهنگی رو توی هیچ ترکیب دیگه‌ای پیدا نمی‌کنید.

چیکار می‌کنه؟

  • پاکسازی دیتابیس: حذف نسخه‌های پیشین، پیش‌نویس‌های خودکار، نظرات اسپم، ترنزینت‌های منقضی، متادیتای یتیم و پینگ‌بک‌ها — هر کدوم رو جداگانه و با تیک انتخاب می‌کنید.
  • اجرای OPTIMIZE TABLE: فضای خالی به‌جامونده از ردیف‌های حذف‌شده رو آزاد می‌کنه.
  • زمان‌بندی خودکار: روزانه، هفتگی یا ماهانه.
  • نگه‌داشتن داده‌های اخیر: می‌تونید بگید «نسخه‌های دو هفته اخیر رو دست نزن» — ویژگی خیلی خوبی که جلوی پشیمونی رو می‌گیره.
  • کش صفحه و فشرده‌سازی تصویر: نسخه رایگان هم داره.

حواستون به این باشه

WP-Optimize توی نسخه‌های اخیر چند تا آسیب‌پذیری امنیتی داشته که سریع هم وصله شدن. این بد نیست، طبیعیه؛ ولی یعنی باید همیشه به‌روز نگهش دارید. افزونه‌ای که به دیتابیس دسترسی مستقیم داره، اگه آسیب‌پذیر باشه خیلی خطرناک‌تر از یه افزونه ساده گالریه.

برای آموزش گام‌به‌گام تنظیمات این افزونه، مقاله بهینه سازی دیتابیس وردپرس با افزونه WP Optimize رو توی میهن وردپرس بخونید.

Advanced Database Cleaner

اگه WP-Optimize جاروبرقی خونه‌ست، این یکی چاقوی جراحیه. افزونه Advanced Database Cleaner برای وقتیه که می‌خواید دقیقاً بدونید هر ردیف توی دیتابیستون مال کیه و چرا اونجاست.

Advanced Database Cleaner
افزونه Advanced Database Cleaner

قابلیت کلیدیش اینه که جداول، گزینه‌ها و کرون‌جاب‌ها رو اسکن می‌کنه و سعی می‌کنه بگه هر کدوم متعلق به کدوم افزونه یا قالبه. نتیجه؟ لیستی از آیتم‌های «یتیم» — یعنی چیزهایی که صاحبشون دیگه روی سایت شما نیست.

نقاط قوتش

  • شناسایی جداول متروک: جدول‌هایی که به هیچ افزونه یا قالب فعالی وصل نیستن.
  • مدیریت جدول wp_options: می‌تونید ببینید کدوم گزینه‌ها autoload هستن، حجمشون چقدره و منبعشون چیه. همون بحثی که بالاتر گفتم — این افزونه بهترین ابزار رایگان برای حلشه.
  • کرون‌جاب‌های یتیم: کارهای زمان‌بندی‌شده‌ای که افزونه‌های حذف‌شده جا گذاشتن.
  • بک‌آپ قبل از پاکسازی و امکان زمان‌بندی خودکار.
  • نسخه Pro یه سیستم اسکن ابری داره که با دقت بیشتری منبع آیتم‌ها رو تشخیص می‌ده.

هشدار جدی: این افزونه گاهی جدولی رو «یتیم» تشخیص می‌ده که در واقع مال یه افزونه فعاله (مثلاً افزونه‌ای که اسم جدولش با پیشوند عجیبی ساخته). هیچ‌وقت کورکورانه روی «حذف همه» نزنید. اسم جدول رو توی گوگل سرچ کنید، مطمئن بشید، بعد حذف کنید.

WP-DBManager

افزونه WP-DBManager ساخته Lester Chan، یکی از قدیمی‌ترین افزونه‌های اکوسیستم وردپرسه. برای سال‌ها یه ابزار قدرتمند ولی نسبتاً رهاشده بود؛ اما همین اواخر یه بازنویسی کامل (نسخه ۴.۰) گرفته: کد به کلاس‌های مدرن منتقل شده، وابستگی به jQuery حذف شده، و مهم‌تر از همه، ایرادات امنیتی قدیمیش برطرف شده.

افزونه WP db Manager
افزونه WP db Manager

چی بهتون می‌ده؟

  • دید کامل از دیتابیس: حجم کل، حجم هر جدول به تفکیک، تعداد ردیف‌ها و فضای هدررفته.
  • تعمیر جداول خراب (Repair): این قابلیت رو تقریباً هیچ افزونه دیگه‌ای توی این لیست به این شکل نداره. اگه با خطای «Error establishing a database connection» یا جدول خراب مواجه شدید، همین گزینه ممکنه نجاتتون بده.
  • بک‌آپ و بازیابی SQL مستقیم از پیشخوان.
  • اجرای کوئری SQL دلخواه.
  • زمان‌بندی خودکار بک‌آپ، بهینه‌سازی و تعمیر.

نکته امنیتی که حتماً باید بدونید

WP-DBManager بک‌آپ‌ها رو به‌صورت پیش‌فرض توی wp-content/backup-db ذخیره می‌کنه. اگه این پوشه محافظت نشده باشه، یه نفر می‌تونه فایل SQL کامل دیتابیس شما (شامل هش رمز عبور همه کاربران) رو دانلود کنه. توی نسخه‌های جدید، خود افزونه این وضعیت رو تست می‌کنه و بهتون گزارش می‌ده. بهترین راه‌حل اینه که مسیر بک‌آپ رو به یه پوشه بیرون از پوشه public_html تغییر بدید.

اگه با nginx کار می‌کنید، فایل .htaccess که افزونه می‌سازه هیچ کاری نمی‌کنه و باید قانون رو دستی به کانفیگ سرور اضافه کنید.

آموزش کار با این افزونه رو توی مقاله مدیریت دیتابیس وردپرس با WP db Manager دنبال کنید.

UpdraftPlus

بیش از ۳ میلیون نصب فعال، امتیاز ۴.۸ از ۵. UpdraftPlus عملاً استاندارد دنیای پشتیبان‌گیری وردپرسه و دلیلش هم ساده‌ست: نسخه رایگانش واقعاً کامله، نه یه دموی ناقص.

افزونه UpdraftPlus
افزونه UpdraftPlus

ویژگی‌های اصلی

  • بک‌آپ خودکار زمان‌بندی‌شده از فایل‌ها و دیتابیس، جداگانه یا با هم.
  • ذخیره رایگان روی گوگل درایو، دراپ‌باکس، آمازون S3، FTP، Rackspace و حتی ایمیل.
  • بازیابی با چند کلیک، بدون نیاز به phpMyAdmin.
  • بک‌آپ جزئی — مثلاً فقط دیتابیس، هر روز؛ فایل‌ها، هفته‌ای یک‌بار.
  • رمزگذاری بک‌آپ دیتابیس.
  • امکان استفاده به‌عنوان ابزار مهاجرت سایت به دامنه یا هاست جدید.

مهم‌ترین اشتباه رایج: اگه UpdraftPlus رو نصب کنید ولی فضای ابری بهش وصل نکنید، بک‌آپ‌ها روی همون هاست ذخیره می‌شن. یعنی اگه هاستتون بسوزه یا هک بشه، بک‌آپ‌هاتون هم با خودش می‌بره. بک‌آپی که کنار خود سایت باشه، بک‌آپ نیست. حتماً گوگل درایو یا دراپ‌باکس رو وصل کنید — کارش ۲ دقیقه‌ست.

نسخه پولی به دردتون می‌خوره؟

برای سایت‌های کوچیک و متوسط، نه. نسخه Premium اگه بک‌آپ افزایشی (Incremental)، بک‌آپ خودکار قبل از هر آپدیت، مقاصد ابری بیشتر مثل OneDrive و Backblaze، یا پشتیبانی مالتی‌سایت می‌خواید ارزش داره. فروشگاه‌های بزرگ که فایل‌های حجیم دارن، از بک‌آپ افزایشی خیلی سود می‌برن.

آموزش کامل رو توی مقاله آموزش بک آپ گیری از وردپرس با افزونه UpdraftPlus ببینید.

BackWPup

اگه چند سال پیش مقاله‌ای درباره افزونه BackWPup خوندید، اطلاعاتتون دیگه به‌درد نمی‌خوره. این افزونه حالا زیر نظر WP Media توسعه داده می‌شه — همون تیمی که WP Rocket و Imagify رو می‌سازه — و نسخه ۵ عملاً یه محصول جدیده با رابط کاربری بازطراحی‌شده و ویزارد راه‌اندازی.

افزونه BackWPup
افزونه BackWPup

چرا ممکنه BackWPup رو به UpdraftPlus ترجیح بدید؟

  • تعمیر و بهینه‌سازی دیتابیس قبل از بک‌آپ: کاری که UpdraftPlus انجام نمی‌ده. یعنی این افزونه هم بک‌آپ‌گیره، هم تا حدی ابزار نگهداری دیتابیس.
  • پشتیبانی بومی از مالتی‌سایت در نسخه رایگان. اگه شبکه وردپرسی دارید، این تقریباً بی‌رقیبه.
  • ساخت چند «Job» مستقل با زمان‌بندی متفاوت — مثلاً بک‌آپ دیتابیس هر ۶ ساعت، بک‌آپ فایل‌ها هفتگی.
  • خروجی XML استاندارد وردپرس (WXR) و فرمت‌های فشرده‌سازی ZIP، TAR و TAR.GZ.
  • امکان اجرای اسکریپت سفارشی قبل و بعد از بک‌آپ برای کاربران حرفه‌ای.

و اما نقطه ضعف

روی هاست‌های اشتراکی ارزون با منابع محدود، BackWPup بیشتر از UpdraftPlus مستعد خطای Timeout و محدودیت حافظه‌ست. اگه هاستتون ضعیفه، UpdraftPlus گزینه امن‌تریه. (البته توی نسخه‌های اخیر مشکلات حافظه تا حد خوبی برطرف شده.)

آموزش کار باهاش رو توی مقاله بک آپ گرفتن از سایت وردپرس با افزونه BackWPup بخونید.

وقتی بهینه‌سازی دیتابیس فقط نصف ماجراست

بهینه‌سازی دیتابیس به‌تنهایی معجزه نمی‌کنه. اگه ۲۰۰ مگابایت داده اضافی رو از دیتابیستون پاک کنید، شاید زمان بارگذاری صفحه ۱۰۰ تا ۳۰۰ میلی‌ثانیه بهتر بشه. عالیه، ولی اگه سایتتون ۴ ثانیه لود می‌شه، هنوز ۳.۷ ثانیه لود می‌شه. باقی ماجرا دست کش، تصاویر، فایل‌های CSS و JS و کوئری‌های سنگینه.

برای همین اگه دنبال یه راه‌حل یکپارچه فارسی هستید، افزونه رخش می‌تونه گزینه خوبی باشه؛ چون به‌جای اینکه فقط دیتابیس رو تمیز کنه، کل زنجیره سرعت رو پوشش می‌ده!

افزنه رخش
افزنه رخش

در بخش دیتابیس و کش سمت سرور

  • بهینه‌سازی زمان‌بندی‌شده دیتابیس — همون کاری که WP-Optimize می‌کنه، ولی داخل همون پنلی که بقیه تنظیمات سرعتتون هست.
  • پایش کوئری‌های کند دیتابیس — این یکی واقعاً کاربردیه. به‌جای حدس زدن، بهتون نشون می‌ده کدوم کوئری داره وقت سرور رو می‌خوره. معمولاً مقصر یه افزونه خاصه که خودتون هم بهش شک نداشتید.
  • کش آبجکت با Redis — نتایج کوئری‌ها رو توی حافظه نگه می‌داره، پس دیتابیس کمتر درگیر می‌شه. برای فروشگاه‌ها و سایت‌های عضویتی که کش صفحه براشون جواب نمی‌ده، این تقریباً تنها راه‌حل جدیه.
  • گرم‌کردن OPcache در زمان فعال‌سازی.

در بخش کش و سرعت

  • کش کامل صفحه به‌صورت HTML استاتیک، با کش PHP که از کش روی دیسک سریع‌تره.
  • کش جداگانه برای موبایل، کش مرورگر با تنظیم max-age و فشرده‌سازی gzip.
  • عبور خودکار سبد خرید، تسویه‌حساب و صفحه ورود — نکته‌ای که اگه رعایت نشه، سبد خرید مشتری‌ها به هم می‌ریزه. کاربران واردشده هم اصلاً کش نمی‌شن.
  • گرم‌سازی خودکار کش بعد از پاکسازی و خزنده نقشه سایت، تا اولین بازدیدکننده گیر صفحه سرد نیفته.
  • تولید خودکار قوانین nginx و ‎.htaccess و تشخیص خودکار وب‌سرور.

در بخش تصاویر و فایل‌ها

  • تبدیل خودکار به WebP و AVIF با کنترل کیفیت خروجی، پشتیبانی از JPG، PNG، GIF و BMP.
  • حذف اطلاعات EXIF/IPTC و افزودن خودکار ابعاد تصاویر (که مستقیم روی امتیاز CLS اثر می‌ذاره).
  • بارگذاری تنبل تصاویر، آی‌فریم‌ها و ویدیوها با پیش‌نمایش.
  • فشرده‌سازی CSS، JS و HTML، حذف CSS بلااستفاده، بارگذاری تأخیری jQuery و تأخیر اجرای JS تا اولین تعامل کاربر.
  • اجبار font-display: swap، پیش‌بارگذاری فونت‌ها، dns-prefetch و preconnect و پیش‌واکشی با هاور.

پاکسازی وردپرس و ووکامرس

  • غیرفعال‌سازی گراواتار، فونت‌های گوگل، ایموجی وردپرس، oEmbed، فایل comment-reply.js و CSS بلوک‌های گوتنبرگ.
  • تنظیم ضربان قلب (Heartbeat) — یکی از دلایل اصلی مصرف بالای CPU روی هاست‌های اشتراکی.
  • بهینه‌سازی فایل‌های ووکامرس، غیرفعال‌سازی ردیابی ووکامرس و فایل‌های بلاک.
  • یکپارچگی با Cloudflare، بازنویسی آدرس CDN و مسدودسازی هاست‌های کند و تایم‌اوت.

پایش و عیب‌یابی

  • داشبورد آمار و PageSpeed با گزارش Core Web Vitals.
  • پنل عیب‌یابی کش و تحلیل ساختاری سایت.
  • کنترل ارتباطات خروجی و پنل مدیریت بومی بدون وابستگی به CDN خارجی.

ترکیب «پاکسازی دیتابیس + کش + بهینه‌سازی تصویر + پایش کوئری» توی یه افزونه، جلوی چیزی رو می‌گیره که خیلی از سایت‌ها ازش رنج می‌برن؛ اونم نصب پنج افزونه مختلف که با هم تداخل دارن و در نهایت سایت رو کندتر می‌کنن.

بدون افزونه هم می‌شه؟ بله، با WP-CLI

اگه به SSH دسترسی دارید و کمی با خط فرمان راحتید، برای کارهای ساده اصلاً نیازی به افزونه نیست:

# دیدن حجم دیتابیس و جداول
wp db size --tables --human-readable

# حذف ترنزینت‌های منقضی
wp transient delete --expired

# بهینه‌سازی همه جداول
wp db optimize

# حذف تمام نسخه‌های پیشین پست‌ها
wp post delete $(wp post list --post_type=revision --format=ids) --force

مزیت این روش اینه که مصرف منابعش خیلی کمتره و خطای Timeout نمی‌گیرید. عیبش هم اینه که دستور آخر هیچ راه برگشتی نداره؛ پس واقعاً اول بک‌آپ بگیرید.

یه بخش کوچیک ولی حیاتی برای ووکامرسی‌ها

اگه فروشگاه دارید، دو تا کار انجام بدید که تأثیرشون از هر افزونه بهینه‌سازی بیشتره:

اول، HPOS رو فعال کنید. ووکامرس چند ساله سیستم «ذخیره‌سازی پرسرعت سفارش‌ها» (High-Performance Order Storage) رو معرفی کرده که سفارش‌ها رو از جدول شلوغ wp_posts به جدول اختصاصی خودشون منتقل می‌کنه. روی فروشگاه‌های با هزاران سفارش، تفاوت سرعت پیشخوان محسوسه. از مسیر ووکامرس ← تنظیمات ← پیشرفته ← ویژگی‌ها فعالش کنید (اول روی سایت آزمایشی تست کنید، چون همه افزونه‌های جانبی باهاش سازگار نیستن).

دوم، Action Scheduler رو تمیز نگه دارید. از مسیر ووکامرس ← وضعیت ← کارهای زمان‌بندی‌شده می‌تونید ببینید چند تا کار تکمیل‌شده انباشته شده. ووکامرس به‌صورت پیش‌فرض کارهای قدیمی‌تر از یک ماه رو پاک می‌کنه، ولی روی فروشگاه‌های شلوغ این کافی نیست.

کدوم افزونه برای سایت من مناسبه؟

بستگی به سه چیز داره: دانش فنیتون، نوع سایتتون، و اینکه چقدر حوصله تنظیمات دارید.

اگه تازه‌کارید

UpdraftPlus برای بک‌آپ + WP-Optimize برای بهینه‌سازی. تمام. این دوتا رو نصب کنید، زمان‌بندیشون رو تنظیم کنید و دیگه بهشون فکر نکنید.

اگه سایتتون قدیمیه و کلی افزونه روش نصب و حذف شده

Advanced Database Cleaner رو اضافه کنید. یه بار اسکن کامل بگیرید، جداول و کرون‌جاب‌های یتیم رو پیدا کنید، بعد از تمیزکاری می‌تونید حتی حذفش کنید.

اگه با SQL راحتید یا سایت مشتری مدیریت می‌کنید

WP-DBManager بهتون دیدی می‌ده که هیچ‌کدوم از بقیه نمی‌دن — حجم دقیق هر جدول، فضای هدررفته و امکان تعمیر جدول خراب.

اگه فروشگاه یا سایت پربازدید دارید

فقط پاکسازی کافی نیست. به کش آبجکت (Redis) و پایش کوئری نیاز دارید. اینجاست که یه راه‌حل یکپارچه مثل افزونه رخش یا ترکیب Redis Object Cache + یه افزونه کش، منطقی‌تر از پنج‌تا افزونه جدا از همه.

عیب‌یابی خطاهای رایج

خطای Timeout یا «انقضای زمان اجرا»

معمول‌ترین خطاست. دیتابیس بزرگه و سرور نمی‌تونه عملیات رو توی زمان مجاز (اغلب ۳۰ ثانیه) تموم کنه. راه‌حل‌ها به ترتیب اولویت:

  1. توی تنظیمات افزونه گزینه پاکسازی تدریجی یا batch رو فعال کنید.
  2. جدول‌ها رو یکی‌یکی بهینه کنید، نه همه رو با هم.
  3. اگه دسترسی دارید، از WP-CLI استفاده کنید که اصلاً محدودیت زمانی وب‌سرور رو نداره.
  4. به‌عنوان آخرین راه، توی wp-config.php بالای خط /* That's all, stop editing! */ این خط رو اضافه کنید:
@ini_set( 'max_execution_time', 300 );

عدد ۳۰۰ یعنی ۵ دقیقه. توجه کنید که خیلی از هاست‌های اشتراکی این تنظیم رو نادیده می‌گیرن، پس اگه اثر نکرد تقصیر شما نیست.

خطای «دسترسی کافی نیست» (Permission Denied)

پوشه مقصد بک‌آپ مجوز نوشتن نداره. از طریق FTP یا فایل‌منیجر هاست، سطح دسترسی پوشه رو روی 755 بذارید. روی ۷۷۷ نذارید — خیلی از آموزش‌های قدیمی این رو پیشنهاد می‌دن ولی از نظر امنیتی خطرناکه و بعضی هاست‌ها هم اصلاً قبولش نمی‌کنن. اگه ۷۵۵ جواب نداد، به پشتیبانی هاست بگید مالکیت فایل‌ها رو درست کنه.

بعد از پاکسازی، سایت به هم ریخت

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

بهینه‌سازی کردم ولی حجم دیتابیس تغییری نکرد

اگه دیتابیستون از موتور InnoDB استفاده می‌کنه (که استاندارد امروزه)، دستور OPTIMIZE TABLE همیشه فضای روی دیسک رو آزاد نمی‌کنه — فضا داخلی بازیابی می‌شه و برای ردیف‌های جدید استفاده می‌شه. یعنی کار انجام شده، فقط عدد حجم تغییر نکرده. جای نگرانی نیست.

چک‌لیست نگهداری دیتابیس

اینو یه جایی سیو کنید:

  • هفتگی: بک‌آپ خودکار روی فضای ابری (یک‌بار تنظیم می‌کنید، تمام).
  • ماهانه: پاکسازی نسخه‌های پیشین، ترنزینت‌ها و اسپم‌ها + اجرای بهینه‌سازی جدول‌ها.
  • هر ۶ ماه: بررسی جداول متروک، کرون‌جاب‌های یتیم و گزینه‌های autoload.
  • هر ۶ ماه: یه بار بک‌آپ رو روی یه سایت آزمایشی واقعاً بازیابی کنید. بک‌آپی که تستش نکردید، فقط یه فایله؛ بک‌آپ نیست.
  • قبل از هر آپدیت مهم: بک‌آپ تازه بگیرید.

سه خطی که بهتره همین امروز به wp-config.php اضافه کنید

define( 'WP_POST_REVISIONS', 5 );   // حداکثر ۵ نسخه پیشین برای هر پست
define( 'EMPTY_TRASH_DAYS', 7 );    // خالی شدن خودکار سطل زباله بعد از ۷ روز
define( 'AUTOSAVE_INTERVAL', 120 ); // فاصله ذخیره خودکار، بر حسب ثانیه

این سه خط جلوی بخش بزرگی از شلوغی آینده رو می‌گیرن. یعنی به‌جای اینکه هر ماه جارو بکشید، از اول کمتر کثیف می‌کنید.

سؤالات متداول

آیا بهینه‌سازی دیتابیس محتوای سایتم رو حذف می‌کنه؟

بهینه‌سازی (Optimize) نه — اون فقط ساختار جدول‌ها رو مرتب می‌کنه. ولی پاکسازی (Clean) بله، داده حذف می‌کنه. البته فقط داده‌های اضافی مثل نسخه‌های پیشین، اسپم‌ها و ترنزینت‌های منقضی. پست‌ها، صفحات، محصولات، کاربران و نظرات تأییدشده دست‌نخورده می‌مونن. با این حال، قبل از اولین اجرا حتماً بک‌آپ بگیرید.

هر چند وقت یک‌بار دیتابیس رو بهینه کنم؟

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

می‌تونم چند افزونه دیتابیس رو هم‌زمان استفاده کنم؟

دو افزونه که کار یکسانی می‌کنن، نه. مثلاً دو تا افزونه بک‌آپ که هر دو روزانه اجرا می‌شن، هم فضای هاست رو دوبرابر می‌خورن، هم ممکنه هم‌زمان اجرا بشن و هر دو شکست بخورن. ولی ترکیب افزونه‌هایی با کارکرد متفاوت (مثلاً UpdraftPlus برای بک‌آپ + WP-Optimize برای پاکسازی) کاملاً درسته و توصیه هم می‌شه.

بهینه‌سازی دیتابیس روی سئو تأثیر داره؟

غیرمستقیم، بله. گوگل با معیارهای Core Web Vitals سرعت و پایداری صفحه رو می‌سنجه؛ از جمله INP که واکنش‌پذیری سایت به تعامل کاربر رو اندازه می‌گیره. دیتابیس سبک‌تر یعنی زمان پاسخ سرور (TTFB) کمتر، و TTFB روی تقریباً همه شاخص‌های دیگه اثر دومینویی داره. ولی انتظار نداشته باشید فردای پاکسازی، رتبه‌تون جهش کنه — این یکی از ده‌ها فاکتوره، نه کلید طلایی.

روی هاست اشتراکی این افزونه‌ها خوب کار می‌کنن؟

معمولاً بله. WP-Optimize در حالت ساده و UpdraftPlus روی اکثر هاست‌های اشتراکی مشکلی ندارن. اگه دیتابیستون از حدود ۵۰۰ مگابایت بزرگ‌تر شده، احتمال خطای Timeout بالا می‌ره و بهتره یا از پاکسازی تدریجی استفاده کنید یا به فکر ارتقا به سرور مجازی باشید.

حذف نسخه‌های پیشین به سئو ضرر می‌زنه؟

نه. نسخه‌های پیشین هیچ‌وقت ایندکس نمی‌شن و گوگل اصلاً نمی‌بینتشون. تنها ضررش برای خودتونه: اگه بخواید به یه ویرایش قدیمی برگردید، دیگه در دسترس نیست. برای همین گزینه «نسخه‌های X روز اخیر رو نگه دار» توی WP-Optimize رو حتماً فعال کنید.

افزونه بهینه‌سازی نصب کنم یا از phpMyAdmin استفاده کنم؟

اگه دانش SQL دارید، phpMyAdmin سریع‌تر و سبک‌تره. ولی افزونه‌ها یه مزیت مهم دارن: می‌دونن کدوم داده «امن برای حذف» حساب می‌شه و کدوم نه. توی phpMyAdmin یه کوئری DELETE اشتباه می‌تونه توی یک ثانیه سایتتون رو نابود کنه، بدون هیچ اخطاری.

جمع‌بندی

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

خلاصه پیشنهاد ما:

  • UpdraftPlus — نصب کنید، به گوگل درایو وصلش کنید، روی هفتگی تنظیمش کنید. این مهم‌ترین کار امروزتونه.
  • WP-Optimize — پاکسازی ماهانه خودکار با گزینه «نگه‌داشتن ۱۴ روز اخیر».
  • Advanced Database Cleaner — یه بار برای تمیزکاری عمیق سایت‌های قدیمی، بعدش می‌تونید حذفش کنید.
  • WP-DBManager — برای وقتی که لازمه جدول خراب رو تعمیر کنید یا دقیقاً ببینید حجم کجا رفته.
  • BackWPup — جایگزین عالی UpdraftPlus، مخصوصاً برای مالتی‌سایت.
  • افزونه رخش — وقتی می‌خواید بهینه‌سازی دیتابیس، کش، تصاویر و پایش کوئری‌های کند رو یکجا و از یه پنل فارسی مدیریت کنید.

و یه توصیه آخر که ارزشش از کل این مقاله بیشتره: بک‌آپتون رو تست کنید. همین امروز، یه بک‌آپ بگیرید و روی یه سایت آزمایشی بازیابیش کنید. اگه جواب داد، خیالتون راحت. اگه نداد، تازه فهمیدید که تا الان محافظت‌نشده بودید — و بهتره الان بفهمید تا روزی که سایت از دسترس خارج شده.

شما از کدوم افزونه استفاده می‌کنید؟ تجربه‌ای از پاکسازی دیتابیس دارید که به درد بقیه بخوره؟ توی بخش نظرات بنویسید! 🙂

نظر شما در این مورد چیه؟

  1. U317638۲۳ اردیبهشت ۱۴۰۲

    سلام کدام افزونه بهتر است
    این افزونه هم بهینه سازی دیتابیس را انجام می دهد چرا او را نگفتید wp optimize

    • رضا راد۲۴ اردیبهشت ۱۴۰۲

      سلام اینم پلاگین بسیار خوبی هست.

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.