
اگر پیشخوان وردپرس دیر باز میشود، ذخیره نوشتهها زمان میبرد یا بعد از چند سال استفاده از سایت حجم دیتابیس به شکل محسوسی بالا رفته، احتمالاً وقت آن رسیده که دیتابیس را بررسی کنید. اما بهینهسازی دیتابیس به معنی «هرچه بیشتر پاک کنیم بهتر است» نیست؛ بعضی دادههای بزرگ کاملاً ضروریاند و حذف اشتباه آنها میتواند تنظیمات افزونه، اطلاعات کاربران یا حتی سفارشهای ووکامرس را از بین ببرد.
در این راهنما بهجای پاکسازی تهاجمی، 6 روش امن و کاربردی را بررسی میکنیم: حذف نسخههای بازبینی و دادههای قدیمی، پاکسازی دادههای موقت منقضی، بررسی Autoload، شناسایی دادههای یتیم، بهینهسازی جداول در زمان مناسب و مدیریت دادههای فروشگاه. همچنین میبینیم کدام افزونه برای هر سناریو منطقیتر است و چه چیزهایی را نباید بدون بررسی حذف کرد.
بهینهسازی دیتابیس وردپرس چیست و چه زمانی لازم میشود؟
وردپرس برای نمایش سایت فقط فایلهای PHP و قالب را اجرا نمیکند؛ بخش زیادی از اطلاعات لازم از دیتابیس خوانده میشود. نوشتهها در جدول posts، تنظیمات در options، اطلاعات تکمیلی نوشتهها در postmeta، دیدگاهها در comments و دادههای افزونهها نیز در جدولهای اصلی یا جدولهای اختصاصی قرار میگیرند.
با رشد سایت، بزرگ شدن دیتابیس طبیعی است. یک فروشگاه با 50,000 سفارش نباید دیتابیسی هماندازه یک وبلاگ 30 نوشتهای داشته باشد. بنابراین حجم زیاد بهتنهایی نشانه مشکل نیست. چیزی که باید پیدا کنیم دادههای غیرضروری، دادههایی که بیدلیل در هر درخواست بارگذاری میشوند، جدولهای باقیمانده از افزونههای حذفشده یا گزارشهایی هستند که بدون سیاست نگهداری رشد میکنند.
اگر مشکل اصلی سایت از هاست ضعیف، PHP کند، افزونه سنگین یا درخواستهای خارجی باشد، کوچک کردن دیتابیس الزاماً تفاوت بزرگی ایجاد نمیکند. به همین دلیل بهتر است بهینهسازی دیتابیس را بخشی از فرایند کلی افزایش سرعت سایت وردپرسی بدانیم، نه یک راهحل جادویی برای هر نوع کندی.
چه دادههایی را میتوان پاک کرد و به چه چیزهایی نباید دست زد؟
برای کاربر مبتدی مهمترین مهارت این نیست که بداند دکمه «پاکسازی» کجاست؛ باید بداند کدام داده معمولاً کمریسک است و کدام مورد قبل از حذف نیاز به بررسی دارد.
| مورد | معمولاً قابل پاکسازی؟ | ریسک | نکته مهم |
|---|---|---|---|
| نسخههای بازبینی قدیمی | بله | کم | امکان برگشت به نسخههای حذفشده از بین میرود |
| دیدگاههای اسپم و زبالهدان | بله | کم | قبل از حذف نهایی یکبار فهرست را بررسی کنید |
| Transient منقضیشده | بله | کم تا متوسط | روی دادههای فعال و کشهای خارجی با احتیاط عمل کنید |
| Autoload سنگین | فقط بعد از شناسایی | متوسط تا زیاد | بعضی گزینهها ضروریاند؛ حذف کورکورانه ممنوع |
| جدولهای افزونههای حذفشده | گاهی | زیاد | باید مالک جدول مشخص باشد و دیگر به داده آن نیاز نداشته باشید |
| سفارشها و اطلاعات مشتری ووکامرس | خیر، نه بهعنوان پاکسازی عمومی | بسیار زیاد | داده تجاری و عملیاتی سایت است |
این جدول یک قانون قطعی برای همه سایتها نیست. مثلاً ممکن است سایتی واقعاً به نسخههای بازبینی قدیمی نیاز داشته باشد یا افزونهای از Transient خاصی برای پردازش موقت استفاده کند. هدف این است که قبل از حذف بدانید چه چیزی را پاک میکنید.
قبل از شروع: 5 کار ایمنی که نباید نادیده بگیرید
1. نسخه پشتیبان کامل و قابل بازگردانی تهیه کنید
فقط دیدن پیام «پشتیبانگیری موفق بود» کافی نیست. تاریخ نسخه پشتیبان را بررسی کنید و بدانید در صورت خطا چطور دیتابیس را بازگردانی خواهید کرد. اگر هاست امکان تهیه Snapshot یا نسخه پشتیبان فوری دارد، قبل از پاکسازی از آن استفاده کنید.
2. سایت فروشگاهی را روی محیط آزمایشی بررسی کنید
در ووکامرس حذف یک داده اشتباه میتواند روی سبد خرید، تسویهحساب، سفارش یا پردازشهای پسزمینه اثر بگذارد. برای تغییرات سنگین، یک نسخه آزمایشی از سایت بسازید و همان سناریو را ابتدا آنجا اجرا کنید.
3. قبل از پاکسازی، اندازه جدولهای بزرگ را پیدا کنید
اگر هدف کاهش حجم است، اول باید بدانید کدام جدول واقعاً بزرگ شده است. ممکن است 70 درصد حجم دیتابیس مربوط به یک جدول گزارش افزونه امنیتی باشد و پاک کردن Revisionها فقط چند مگابایت آزاد کند. phpMyAdmin، ابزارهای هاست یا افزونههای مدیریت دیتابیس میتوانند اندازه جدولها را نشان دهند.
4. زمان کمترافیک را انتخاب کنید
حذف انبوه رکوردها یا بازسازی جدول بزرگ میتواند برای مدتی فشار روی دیتابیس را بیشتر کند. این کار را وسط کمپین فروش یا ساعت پرترافیک انجام ندهید.
5. بعد از پایان کار، فقط صفحه اصلی را باز نکنید
ورود و خروج، ذخیره نوشته، فرم تماس، جستجو، پنل کاربری و در سایت فروشگاهی افزودن محصول به سبد و تسویهحساب را آزمایش کنید. سالم بودن صفحه اصلی به معنی سالم بودن تمام بخشهای سایت نیست.
روش 1: نسخههای بازبینی، پیشنویسهای خودکار و زبالهدان را پاک کنید
وردپرس هنگام ویرایش نوشته و برگه نسخههای قبلی را با قابلیت Revision نگه میدارد. این قابلیت مفید است؛ اگر بخشی از محتوا اشتباه حذف شود، میتوانید به نسخه قدیمی برگردید. مشکل زمانی ایجاد میشود که یک سایت محتوایی سالها فعالیت کرده و برای بعضی نوشتهها دهها یا صدها نسخه قدیمی نگه داشته باشد.
راه امن این نیست که Revision را برای همیشه خاموش کنیم. بهتر است ابتدا نسخههای خیلی قدیمی را پاک کنیم و در صورت نیاز تعداد نسخههایی که برای آینده نگهداری میشود محدود کنیم. وردپرس بهصورت رسمی اجازه میدهد در فایل wp-config.php سقف نگهداری نسخهها را مشخص کنید:
define( 'WP_POST_REVISIONS', 5 );
در این مثال حداکثر 5 نسخه بازبینی برای هر نوشته نگهداری میشود. این عدد «بهترین مقدار برای همه سایتها» نیست؛ تیم تحریریهای که چند نویسنده روی یک مقاله کار میکنند ممکن است به نسخههای بیشتری نیاز داشته باشد.
همزمان میتوانید پیشنویسهای خودکار قدیمی، دیدگاههای اسپم و محتوای زبالهدان را بررسی کنید. این بخش معمولاً کمریسکترین نقطه شروع برای پاکسازی دیتابیس است.
روش 2: Transientهای منقضیشده را پاک کنید
Transient یا «داده موقت» روشی استاندارد در وردپرس برای ذخیره اطلاعاتی است که لازم نیست همیشه دوباره محاسبه شوند. افزونه ممکن است نتیجه یک درخواست API، یک فهرست یا داده کششده را برای مدت مشخص نگه دارد و بعد دوباره آن را بسازد.
طبق مستندات رسمی WordPress، زمان انقضای Transient یک حداکثر زمان نگهداری است؛ یعنی این داده ممکن است زودتر از زمان تعیینشده هم از دسترس خارج شود. همچنین اگر سایت از Redis یا Memcached استفاده کند، Transient الزاماً داخل دیتابیس ذخیره نمیشود.
بنابراین دو اشتباه رایج وجود دارد: اول اینکه همه Transientها را «آشغال» بدانیم؛ دوم اینکه تصور کنیم پاک کردن همه آنها همیشه باعث افزایش سرعت میشود. در پاکسازی معمول، بهتر است ابتدا Transientهای منقضیشده را هدف بگیرید.
روش 3: Autoload سنگین را پیدا کنید؛ نه اینکه همه Options را پاک کنید
این بخش یکی از مهمترین تفاوتهای یک پاکسازی سطحی با بررسی واقعی دیتابیس است. بعضی Optionهای جدول wp_options طوری تنظیم شدهاند که در درخواستهای وردپرس بهصورت خودکار بارگذاری شوند. این رفتار ذاتاً بد نیست؛ برای تنظیماتی که مرتب استفاده میشوند باعث کاهش رفتوبرگشتهای جداگانه به دیتابیس میشود.
مشکل زمانی است که افزونهای داده بزرگ یا کماستفاده را در Autoload نگه دارد. وردپرس از نسخه 6.6 در ابزار «سلامت سایت» اندازه این دادهها را بررسی میکند و آستانه پیشفرض هشدار 800000 بایت است. این عدد یک مرز جادویی برای پاکسازی نیست، بلکه سیگنالی است که باید بررسی دقیقتر انجام شود.
مسیر بررسی در پیشخوان:
ابزارها → سلامت سایت → وضعیت
اگر هشدار مربوط به گزینههای بارگذاری خودکار را میبینید، بهجای حذف مستقیم Optionها، ابتدا مالک هر گزینه را شناسایی کنید. گاهی راه درست حذف Option نیست؛ فقط باید دادهای که دیگر در همه صفحات لازم نیست از Autoload خارج شود.
روش 4: دادهها و جدولهای یتیم را شناسایی کنید
یکی از دلایل رشد دیتابیس این است که حذف افزونه الزاماً به معنی حذف تمام دادههای آن نیست. بعضی توسعهدهندگان عمداً تنظیمات و جدولها را نگه میدارند تا اگر افزونه دوباره نصب شد، اطلاعات قبلی برگردد. بنابراین «جدول باقیمانده» همیشه مساوی «جدول بیاستفاده» نیست.
قبل از حذف یک جدول، حداقل این 4 سؤال را جواب دهید:
- نام جدول به کدام افزونه یا سرویس مربوط است؟
- آن افزونه هنوز فعال است یا ممکن است دوباره نصب شود؟
- آیا جدول شامل داده کاربر، سفارش، فرم یا گزارش قانونی/مالی است؟
- آیا نسخه پشتیبان تازه از دیتابیس دارید؟
برای دادههای یتیم در postmeta، commentmeta یا Options هم همین احتیاط لازم است. افزونه Advanced Database Cleaner برای مشاهده جزئیتر این دادهها مفید است، اما حتی وقتی ابزار چیزی را «Orphan» تشخیص میدهد بهتر است مالک داده را بررسی کنید.
روش 5: جداول دیتابیس را فقط زمانی که لازم است بهینه کنید
عبارت «Optimize Database» گاهی این تصور را ایجاد میکند که با زدن یک دکمه همه Queryها سریعتر میشوند. در عمل، بهینهسازی فیزیکی جدولها فقط یکی از بخشهای نگهداری دیتابیس است و نتیجه آن به موتور ذخیرهسازی، نوع جدول، مقدار فضای آزاد و الگوی حذف و درج داده بستگی دارد.
در سایتهای جدید بیشتر جدولها از InnoDB استفاده میکنند. بنابراین توصیه قدیمی «هر روز همه جدولها را Optimize کنید» نه ضروری است و نه لزوماً سود مشخصی دارد. اگر افزونه پاکسازی گزارش میدهد یک جدول نیاز به بهینهسازی دارد، این کار را در زمان کمترافیک و بعد از تهیه نسخه پشتیبان انجام دهید.
روش 6: دیتابیس ووکامرس را جداگانه مدیریت کنید
بهینهسازی دیتابیس یک فروشگاه با وبلاگ ساده یکسان نیست. ووکامرس علاوه بر سفارشها و مشتریان، نشستها، دادههای موقت، کارهای پسزمینه و گزارشهای مختلف دارد. بعضی افزونههای درگاه، ارسال، انبار و بازاریابی نیز جدولهای اختصاصی خود را ایجاد میکنند.
نشستهای منقضیشده مشتریان
اطلاعات موقت سبد خرید و نشست کاربران میتواند با ترافیک بالا رشد کند. پاکسازی نشستهای واقعاً منقضیشده منطقی است، اما بعد از آن عملکرد سبد خرید و تسویهحساب را بررسی کنید.
Action Scheduler
ووکامرس و افزونههای دیگر از Action Scheduler برای اجرای کارهای پسزمینه استفاده میکنند. بزرگ شدن جدولها یا گزارشهای آن ممکن است علامت این باشد که یک کار مرتب شکست میخورد. در چنین حالتی صرفاً حذف گزارشها مشکل را حل نمیکند؛ باید عامل تولید خطا را هم پیدا کنید.
سفارشها و دادههای مشتری
این اطلاعات را فقط برای کاهش حجم دیتابیس حذف نکنید. سیاست نگهداری سفارش و اطلاعات مشتری باید با نیاز کسبوکار، حسابداری و الزامات حقوقی شما هماهنگ باشد.
بهترین افزونههای بهینهسازی دیتابیس وردپرس در 2026
برای بیشتر کاربران، افزونه معتبر امنتر از اجرای مستقیم SQL است. اما انتخاب ابزار باید بر اساس نوع سایت باشد، نه تعداد گزینههایی که در صفحه افزونه میبینید.
| افزونه | مدل ارائه | نقطه قوت | برای چه کسی مناسب است؟ |
|---|---|---|---|
| WP-Sweep | رایگان | پاکسازی ساده و مرحلهای | کاربر مبتدی تا متوسط |
| Optimize Database after Deleting Revisions | رایگان | کنترل Revision و زمانبندی پاکسازی | سایتهای محتوایی |
| WP-Optimize | رایگان + نسخه تجاری | پاکسازی در کنار ابزارهای عملکردی دیگر | کسی که ابزار چندمنظوره میخواهد |
| Advanced Database Cleaner | رایگان + نسخه تجاری | بررسی دقیق Options، Transients و دادههای یتیم | سایتهای بزرگ و فروشگاهی |
WP-Sweep؛ برای پاکسازی ساده و کنترلشده
WP-Sweep در زمان بررسی بیش از 100,000 نصب فعال دارد و تا WordPress 7.1 تست شده است. افزونه بخشهای مختلف را جدا نشان میدهد تا قبل از پاکسازی ببینید چه تعداد Revision، دیدگاه اسپم، داده یتیم یا Transient وجود دارد.
مزیت اصلی WP-Sweep همین سادگی است. برای کاربری که میخواهد ابتدا موارد کمریسک را پاک کند، انتخاب خوبی است. با این حال از گزینه پاکسازی همه موارد بدون مرور بخشها استفاده نکنید.
Optimize Database after Deleting Revisions؛ مناسب سایتهای محتوایی
این افزونه روی مدیریت Revisionها و پاکسازی دورهای تمرکز دارد. میتوانید تعداد مشخصی از نسخههای جدید را نگه دارید، نسخههای قدیمیتر را حذف کنید و برای بهینهسازی زمانبندی داشته باشید. اگر سایت تحریریهای دارید که Revision زیادی تولید میکند، این تمرکز میتواند از یک ابزار همهکاره مفیدتر باشد.
WP-Optimize؛ ابزار چندمنظوره
WP-Optimize بیش از 1 میلیون نصب فعال دارد و فقط ابزار دیتابیس نیست؛ قابلیتهایی در حوزه کش، تصاویر و بهینهسازی فایلها هم ارائه میکند. این موضوع برای بعضی کاربران مزیت است، اما اگر از قبل افزونهای مثل LiteSpeed Cache یا ابزار دیگری برای کش استفاده میکنید، فعال کردن چند قابلیت همپوشان ممکن است مدیریت سایت را پیچیده کند.
نسخه اصلی افزونه رایگان است و امکانات تجاری نیز ارائه میشود؛ بنابراین معرفی آن بهعنوان «فقط پرمیوم» دقیق نیست.
Advanced Database Cleaner؛ برای بررسی عمیقتر
Advanced Database Cleaner نیز نسخه رایگان دارد و بیش از 100,000 نصب فعال ثبت کرده است. نقطه قوت آن نمایش و فیلتر جزئیتر Options، Transients، Cron Jobs و جداول است. امکانات پیشرفته تشخیص ارتباط بعضی دادههای یتیم با افزونه یا قالب در نسخه تجاری کاملتر میشود.
اگر سایت قدیمی، چندزبانه یا فروشگاهی دارید و قبل از حذف میخواهید بدانید هر داده از کجا آمده، این افزونه انتخاب تخصصیتری است.
کدام افزونه را انتخاب کنیم؟
- اگر فقط پاکسازی ساده و قابلفهم میخواهید: WP-Sweep.
- اگر مشکل اصلی Revisionهای زیاد است و زمانبندی میخواهید: Optimize Database after Deleting Revisions.
- اگر ابزار چندمنظوره برای دیتابیس و عملکرد سایت میخواهید: WP-Optimize.
- اگر میخواهید Options، جداول و دادههای یتیم را دقیقتر تحلیل کنید: Advanced Database Cleaner.
لازم نیست 2 یا 3 افزونه پاکسازی را همزمان فعال کنید. یک ابزار را انتخاب کنید، نتیجه را بررسی کنید و فقط در صورتی سراغ ابزار دیگر بروید که نیاز مشخصی داشته باشید.
آیا بهینهسازی دیتابیس واقعاً سرعت سایت را بیشتر میکند؟
میتواند کمک کند، اما مقدار اثر به علت کندی بستگی دارد. اگر جدول Options شما با Autoloadهای غیرضروری سنگین شده یا یک افزونه میلیونها ردیف گزارش تولید کرده، اصلاح آن میتواند تفاوت مشخصی ایجاد کند. اگر دیتابیس سالم است و مشکل از JavaScript، تصویر یا هاست باشد، پاکسازی Revisionها تغییر چشمگیری در زمان بارگذاری ایجاد نخواهد کرد.
برای ارزیابی بهتر، قبل و بعد از کار این موارد را مقایسه کنید:
- زمان باز شدن پیشخوان و صفحه ویرایش نوشته؛
- زمان اجرای صفحات دینامیک و بدون کش؛
- اندازه جدولهای اصلی؛
- هشدارهای سلامت سایت؛
- تعداد و زمان Queryهای کند، در صورت استفاده از ابزار مانیتورینگ.
هدف این نیست که عدد حجم دیتابیس را تا حد ممکن کوچک کنیم؛ هدف این است که سایت داده غیرضروری را بیدلیل پردازش نکند.
چکلیست 15 دقیقهای پاکسازی امن دیتابیس
- نسخه پشتیبان بگیرید: دیتابیس و فایلها، با امکان بازگردانی.
- جدولهای بزرگ را بررسی کنید: مشخص کنید حجم اصلی کجاست.
- موارد کمریسک را پاک کنید: اسپم، زبالهدان، Revisionهای قدیمی و Transientهای منقضی.
- سلامت سایت را ببینید: هشدار Autoload را بررسی کنید.
- داده یتیم را شناسایی کنید: حذف فقط بعد از مشخص شدن مالک داده.
- در ووکامرس Scheduled Actions را بررسی کنید: مخصوصاً Failed و Pending.
- سایت را تست کنید: ورود، فرم، جستجو، پنل و خرید.
- فقط در صورت نیاز زمانبندی کنید: پاکسازی خودکار نباید تهاجمی باشد.
هر چند وقت یکبار دیتابیس وردپرس را پاکسازی کنیم؟
یک عدد ثابت برای همه سایتها وجود ندارد. تعداد نوشته، ترافیک، افزونهها و نوع سایت تعیین میکند بررسی دیتابیس هر چند وقت یکبار منطقی است.
| نوع سایت | تناوب بررسی پیشنهادی | موارد مهم |
|---|---|---|
| وبلاگ یا سایت شرکتی کمترافیک | هر 2 تا 3 ماه | Revision، اسپم، Transient منقضی، Autoload |
| سایت محتوایی پرترافیک | ماهانه | Revision، Options، گزارش افزونهها، اندازه جدولها |
| فروشگاه ووکامرس | هفتگی تا ماهانه بسته به ترافیک | نشستها، Transientها، Action Scheduler، Autoload و گزارشها |
اگر یک جدول طی چند روز صدها مگابایت رشد میکند، افزایش تعداد پاکسازی راهحل اصلی نیست. باید مشخص کنید چه افزونه یا فرایندی آن داده را تولید میکند و علت رشد را برطرف کنید.
اشتباهات رایج در بهینهسازی دیتابیس وردپرس
پاکسازی بدون نسخه پشتیبان
حتی افزونه معتبر هم نمیتواند تشخیص دهد شما به یک داده قدیمی خاص نیاز دارید یا نه. نسخه پشتیبان خط دفاع اصلی است.
حذف هر جدول ناشناس
پیشوند عجیب یا نام افزونه حذفشده دلیل کافی برای پاک کردن جدول نیست. ابتدا مالک و کاربرد داده را مشخص کنید.
خاموش کردن کامل Revision
Revision یک قابلیت مفید وردپرس است. برای بیشتر سایتها محدود کردن تعداد نسخهها منطقیتر از غیرفعال کردن کامل آن است.
پاک کردن همه Transientها در هر بار بهینهسازی
تمرکز روی موارد منقضیشده معمولاً محافظهکارانهتر است. داده فعال ممکن است بلافاصله دوباره تولید شود و فشار غیرضروری ایجاد کند.
استفاده از چند افزونه پاکسازی همزمان
این کار نهتنها لازم نیست، بلکه تشخیص اینکه کدام ابزار چه دادهای را حذف کرده سختتر میشود.
تمرکز روی حجم و نادیده گرفتن Autoload
یک دیتابیس بزرگ میتواند سالم باشد؛ در مقابل چند Option سنگین که در همه درخواستها بارگذاری میشوند میتوانند مهمتر از صدها مگابایت داده تاریخی باشند.
جمعبندی
بهینهسازی دیتابیس وردپرس زمانی مفید است که با هدف مشخص انجام شود، نه فقط برای پایین آوردن عدد حجم دیتابیس. ابتدا سراغ موارد کمریسک مانند Revisionهای قدیمی، اسپم، زبالهدان و Transientهای منقضی بروید. بعد اگر هنوز مشکل یا رشد غیرعادی دارید، Autoload، دادههای یتیم، جدولهای بزرگ و پردازشهای ووکامرس را بررسی کنید.
برای بیشتر کاربران، یک افزونه معتبر و پاکسازی مرحلهای کافی است. در سایتهای فروشگاهی و پرترافیک نیز نسخه پشتیبان، محیط آزمایشی و تست کامل بعد از تغییر اهمیت بیشتری از خود عملیات پاکسازی دارد.
اگر بعد از پاکسازی دیتابیس هنوز سایت کند است، مسئله را فقط به دیتابیس محدود نکنید. عملکرد وردپرس نتیجه مجموعهای از هاست، PHP، قالب، افزونهها، کش، درخواستهای خارجی و دیتابیس است و بهترین نتیجه زمانی به دست میآید که علت واقعی کندی پیدا شود.
