رفع مشکل افزایش حجم جدول wp_options

3 مرداد 1404
سلطان وب
اشتراک گذاری:
امتیاز مقاله:
زمان مطالعه:

حدودا 11 دقیقه

رفع مشکل افزایش حجم جدول wp_options

رفع مشکل افزایش حجم جدول wp_options

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

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


جدول wp_options چیست؟

جدول wp_options بخشی از پایگاه داده وردپرس است که تنظیمات سایت و افزونه‌ها را ذخیره می‌کند. این جدول حاوی مواردی مانند:

  • تنظیمات عمومی سایت
  • داده‌های ذخیره شده توسط افزونه‌ها
  • مقادیر موقتی (transients)
  • اطلاعات مربوط به کش (cache)
  • و گزینه‌های سفارشی

چرا جدول wp_options حجیم می‌شود؟

همانطور که در ابتدای آموزش گفتم ، دلایل مختلفی میتواند این مشکل را برای شما بوجود آورد که در ادامه بصورت کامل هر یک را توضیح خواهم داد.

علت توضیح
افزونه‌های ضعیف از نظر بهینه‌سازی افزونه‌هایی که اطلاعات زیادی در wp_options ذخیره می‌کنند بدون پاک‌سازی
ذخیره مقادیر موقتی (Transients) منقضی‌شده بسیاری از افزونه‌ها مقادیر موقتی برای کش ایجاد می‌کنند اما آن‌ها را پس از انقضا حذف نمی‌کنند.
وجود افزونه‌های نال یا کرک شده افزونه‌هایی که بصورت غیراورجینال تهیه و استفاده میشوند باعث ایجاد مشکل در دیتابیس میشود.
افزونه‌های غیرفعال یا حذف‌شده داده‌های مربوط به افزونه‌ای که حذف یا غیرفعال شده ولی هنوز در پایگاه داده باقی مانده است.
استفاده نادرست از autoload = yes اطلاعات غیرضروری با لود خودکار هنگام بارگذاری هر صفحه سایت

بررسی حجم جدول wp_options

برای شروع باید بدانید چقدر از حجم دیتابیس به این جدول اختصاص دارد.

روش اول: از phpMyAdmin

  1. وارد phpMyAdmin شوید.
  2. پایگاه داده سایت را انتخاب کنید.
  3. جلوی wp_options مقدار “Size” را ببینید.

روش دوم: از خط فرمان MySQL

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "نام_پایگاه_داده"
AND table_name = "wp_options";

بررسی رکوردهای Autoload در جدول wp_options

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

مشاهده مقدار کل autoload شده‌ها:

SELECT SUM(LENGTH(option_value)) AS autoload_size
FROM wp_options
WHERE autoload = 'yes';

مشاهده سنگین‌ترین autoload ها:

SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;

حذف ترنزینت‌های منقضی‌شده (Expired Transients)

حذف دستی از SQL:

DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
  AND option_name NOT LIKE '_transient_timeout_%';

یا حذف فقط منقضی‌شده‌ها:

DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
  AND option_name IN (
    SELECT option_name FROM wp_options
    WHERE option_name LIKE '_transient_timeout_%'
      AND option_value < UNIX_TIMESTAMP()
  );

هشدار: حتماً از دیتابیس خود پشتیبان (Backup) بگیرید.


بهینه‌ سازی جدول wp_options

پس از حذف داده‌های غیرضروری، بهتر است جدول wp_options را بهینه‌سازی کنیم. برای این کار نیاز هست ابتدا وارد phpmyadmin شوید و دیتابیس مدنظرتون را انتخاب کنید.

  • سپس روی جدول wp_options کلیک کنید.
  • از پایین صفحه روی گزینه Optimize table کلیک کنید.

یا از طریق تب SQL ، دستور زیر را اجرا کنید:

OPTIMIZE TABLE wp_options;

 توجه: درصورتیکه شما پیشوند حداول دیتابیس خود را بدلایل امنیتی از _wp به مورد دیگری تغییر داده اید ، نیاز هست این پیشوند را در دستوراتی که در کل آموزش اعلام میشود تغییر دهید. به عنوان مثال اگر شما پیشوند _htwq را برای کل دیتابیس خود انتخاب کردید ، حدول پیشفرض wp_options شما با نام جدید htwq_options خواهد بود.


رفع مشکل حجیم شدن wp_options با استفاده از افزونه

1. نصب افزونه بهینه‌ سازی دیتابیس

2. پایش افزونه‌های نصب‌شده

  • افزونه‌های ناشناس یا بی‌کیفیت را حذف کنید.
  • بررسی کنید که کدام افزونه‌ها مقادیر زیادی Autoload می‌سازند.

3. ایجاد کرون‌ جاب برای پاکسازی خودکار ترنزینت‌ها

برای این کار نیاز هست وارد کنترل پنل هاست خود شوید. سپس وارد فایل منیجر شده و به بخش public_html>wp-content>themes شده و فولدر قالب خود را انتخاب کنید. سپس فایل functions.php را ادیت کرده و کد زیر را به انتهای این فایل اضافه کنید.

add_action('wp_loaded', function () {
    global $wpdb;
    $wpdb->query("
        DELETE FROM {$wpdb->options}
        WHERE option_name LIKE '_transient_%'
          AND option_name NOT LIKE '_transient_timeout_%'
    ");
});

این کد را بهتر است به صورت کرون‌جاب هفتگی اجرا کنید، نه در هر بار بارگذاری.


بررسی زمان پاسخ دیتابیس

اگر جدول wp_options حتی پس از پاکسازی هنوز سنگین است، زمان لود شدن صفحات را با افزونه‌هایی زیر بررسی کنید. اگر کوئری‌های سنگین از این جدول می‌آیند، باید به فکر بازنویسی عملکرد افزونه‌ها باشید.

  • Query Monitor
  • Debug Bar

پاکسازی‌های مرتبط با افزونه‌ها

۱. پاکسازی جدول دیتابیس لایت‌اسپید

افزونه LiteSpeed Cache داده‌هایی برای کش، صفحه، object cache، و transients در دیتابیس ذخیره می‌کند. برخی از این داده‌ها در جدول wp_options یا جداول خاص لایت‌اسپید ثبت می‌شوند.

نحوه پاکسازی:

  1. وارد پیشخوان وردپرس شوید.
  2. از منوی LiteSpeed Cache روی Toolbox (جعبه ابزار) کلیک کنید.
  3. به تب Database (پایگاه داده) بروید.

در اینجا گزینه‌هایی برای پاکسازی خواهید دید:

گزینه توضیح
Clean All تمام بخش‌ها را پاکسازی می‌کند. شامل Revision، Trash، Transients
Clean Transients پاکسازی داده‌های گذرا، شامل _transient_* از wp_options
Clean LSCACHE حذف داده‌های کش افزونه
Optimize Tables اجرای دستور OPTIMIZE TABLE روی تمام جداول

این تنظیمات کمک می‌کند داده‌های اضافی لایت‌اسپید و سایر افزونه‌ها پاک‌سازی شوند. پیشنهاد می‌شود پاکسازی به صورت دستی یا زمان‌بندی شده انجام شود.

 

۲. بهینه‌سازی دیتابیس با افزونه WP-Optimize

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

جهت نصب و استفاده از افزونه نیاز هست مراحل زیر را سپری کنید:

  1. افزونه WP-Optimize را از مخزن وردپرس نصب و فعال سازی کنید.
  2. سپس از منوی سمت راست وارد WP-Optimize > Database شوید.
  3. حالا میتوانید روند بهینه سازی دیتابیس را انجام دهید. فقط گزینه‌هایی را انتخاب کنید که مطمئن هستید باعث از دست رفتن داده‌های مهم نمی‌شوند.

مهم‌ترین قابلیت های افزونه WP-Optimize:

گزینه توضیح
Clean all post revisions پاکسازی ویرایش‌های قدیمی پست‌ها
Clean all auto-draft posts پاکسازی پیش‌نویس‌های خودکار
Remove spam and trashed comments حذف نظرات اسپم و حذف‌شده
Remove transient options پاکسازی Transients
Optimize database tables اجرای دستور OPTIMIZE TABLE

 

۳. پاکسازی داده‌های گذرا (transients) ووکامرس

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

مراحل پاکسازی داده‌های گذرا (transients) ووکامرس:

  1. وارد پیشخوان وردپرس شوید.
  2. به مسیر ووکامرس > وضعیت > ابزارها (WooCommerce > Status > Tools) بروید.
  3. سپس میتوانید از طریق ابزارهای مرتبط با پاکسازی که در ادامه معرفی میشود ، نسبت به پاکسازی ترنزینت‌ها در ووکامرس اقدام کنید.
  4. اجرای این موارد به رفع مشکل حجم اضافی wp_options کمک می‌کند.
ابزار عملکرد
Clear transients پاکسازی داده‌های گذرای معمولی
Clear expired transients پاکسازی داده‌های گذرای منقضی‌شده
Clear customer sessions حذف سشن‌های مشتریان
Regenerate product lookup tables بازسازی داده‌های ایندکس محصولات

مشکلات افزونه‌های وردپرسی در افزایش حجم جدول wp_options

۱. باگ افزونه امنیت کامل وردپرس (All In One WP Security)

در برخی نسخه‌ها وقتی ReCAPTCHA فعال می‌شود، ورودی‌های زیادی از نوع _aiowps_login_failed_attempts یا مشابه آن به صورت ترنزینت در جدول wp_options ثبت می‌شود و به دلایلی حذف نمی‌شوند. این مورد باعث میشود که حجم دیتابیس چندین برابر شود. در برخی پروژه ها مشاهده شده که این موارد تا 2 گیگ به حجم دیتابیس اضافه کرده است. نشانه‌های وجود مشکل را در ادامه توضیح خواهم داد:

  • جدول wp_options به شدت بزرگ می‌شود
  • افزایش زمان لود صفحات سایت
  • مقادیر با autoload = yes ذخیره می‌شوند که باعث کندی شدید می‌شود
  • کندی پنل مدیریت وردپرس

راه‌حل رفع باگ افزونه امنیت کامل وردپرس:

  1. غیرفعال کردن موقت ReCAPTCHA از تنظیمات افزونه امنیت کامل.
  2. بررسی و اصلاح نسخه افزونه (بروزرسانی یا جایگزینی)
  3. اجرای این دستور SQL برای حذف داده‌های مشکل‌ساز:
DELETE FROM wp_options
WHERE option_name LIKE '%aiowps%'
  AND autoload = 'yes';

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

 

۲. باگ افزونه LiteSpeed Cache

در برخی از نسخه‌های LiteSpeed Cache، داده‌های cache یا transients مثل موارد زیر در جدول wp_options به صورت حجیم ذخیره می‌شوند و پاکسازی خودکار ندارند.

  • _transient_litespeed_cache_object_…
  • _transient_timeout_litespeed_cache_object_…

علت این مشکل میتواند شامل موارد زیر باشد:

  • Object cache در سرور فعال نیست، اما LiteSpeed Cache همچنان داده ذخیره می‌کند
  • پاکسازی دوره‌ای transients تنظیم نشده است

راه‌حل رفع باگ افزونه LiteSpeed Cache:

در تنظیمات افزونه LiteSpeed:

  • به مسیر LiteSpeed Cache > Cache > Object بروید.
  • اگر از object cache استفاده نمی‌کنید، آن را غیرفعال کنید.

یا

  1. از تب افزونه لایت اسپید کش به بخش جعبه ابزار > تب دیتابیس رفته و گزینه Clean Transients را بزنید.
  2. اگر لازم است به‌صورت دستی دستور SQL زیر را اجرا کنید:
DELETE FROM wp_options
WHERE option_name LIKE '_transient_litespeed_cache%'
  OR option_name LIKE '_transient_timeout_litespeed_cache%';

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


آنالیز و تعمیر دیتابیس در phpMyAdmin

درصورتیکه تمام موارد بالا را بدرستی و با دقت انجام داده باشید، بایستی مشکل شما حل شده باشد. درصورتیکه همچنان مشکل حجیم شدن دیتابیس وجود دارد، این احتمال وجود دارد که روند را درست انجام داده باشید اما همچنان این تغییرات شناسایی نشده باشند. به همین منظور نیاز هست یکبار روند آنالیز ، چک سام و یا تعمیر را طبق روش زیر انجام دهید. برای بررسی و ترمیم جداول دیتابیس آسیب‌دیده یا حجیم وارد phpMyAdmin شوید:

  1. دیتابیس مربوط به وردپرس را باز کنید.
  2. تیک جدول wp_options را بزنید
  3. از منوی کشویی پایین صفحه میتوانید یکی یکی گزینه های زیر را انتخاب کنید.
گزینه توضیح
Check Table بررسی ساختار جدول از نظر خطا
Analyze Table بررسی آماری برای بهینه‌سازی کوئری‌ها
Repair Table ترمیم جدول آسیب‌دیده
Optimize Table کاهش فضای مصرفی و بهبود عملکرد (معادل OPTIMIZE TABLE)

پیشنهاد: Repair را فقط در صورت مشاهده خطا اجرا کنید.


نتیجه‌گیری

افزایش حجم دیتابیس علی الخصوص جدول wp_options میتواند مشکلات متعددی از جمله کندی شدن سایت و بروز خطاهای مختلف در سایت را بوحود آورد. در این مطلب سعی شد تا بصورت کامل و با زبانی ساده به نحوه رفع مشکل افزایش حجم جدول wp_options بپردازم تا بتوانید به راحتی این مشکل را در سایتتون رفع کنید و نیازی به صرف هزینه در این زمینه نداشته باشید. امیدوارم این آموزش برای شما مفید بوده باشد و بتوانید به خوبی از این آموزش استفاده کنید. در ادامه خلاصه ایی از مباحثی که مطرح شد را جهت یاداوری بیان میکنم تا درک عمیق تری از موضوعات اعلام شده داشته باشید.

  • همیشه قبل از هرگونه دستکاری در دیتابیس، نسخه پشتیبان تهیه کنید.
  • هر از چند وقت یک‌بار دیتابیس را به‌صورت دستی یا خودکار پاکسازی و بهینه‌سازی کنید.
  • از افزونه‌هایی استفاده کنید که در مدیریت ترنزینت‌ها و بهینه‌سازی دیتابیس عملکرد خوبی دارند.
مشکل راه‌حل سریع
حجم زیاد wp_options پاکسازی ترنزینت‌ها و تنظیم Autoload
باگ‌های افزونه‌ها شناسایی داده‌های تکراری و حذف دستی
کندی دیتابیس Repair, Analyze, Optimize از phpMyAdmin
افزونه LiteSpeed یا AIOS بررسی تنظیمات کش و غیرفعال‌سازی ویژگی مشکل‌ساز

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

دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پشتیبانی

چطور می‌تونم کمکت کنم؟

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

پاسخگویی: 9 تا 21
آنلاین و آماده پاسخگویی
ثبت درخواست مشاوره

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

7 روز هفته، از 10 تا 22 پاسخگو شما هستیم
مشاوره میخوای؟
سلطان وب