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

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

چرا شناخت داده‌های اضافی مهم است؟

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

«پاک‌سازی دیتابیس، پیش از آنکه یک عملیات فنی باشد، یک تصمیم درباره ارزش داده است.»

داده‌هایی که می‌توان با اطمینان حذف کرد

  • ریویژن‌های نوشته‌ها (به‌جز ریویژن فعلی).
  • ترنزینت‌های منقضی‌شده.
  • اسپم دیدگاه‌ها.
  • دیدگاه‌های Trash.
  • نوشته‌های Trash بیش از ۳۰ روز.
  • Sessionهای منقضی ووکامرس.
  • Auto-draftهای قدیمی.
  • Postmeta یتیم.
  • Commentmeta یتیم.
  • Usermeta یتیم.

داده‌هایی که با شرایط قابل حذف هستند

  • کاربران Spam (پس از بررسی).
  • سفارش‌های Cancelled قدیمی ووکامرس.
  • لاگ‌های افزونه‌ها (پس از تحلیل).
  • جدول‌های افزونه‌های غیرفعال (پس از اطمینان).
  • دیدگاه‌های Pending بیش از ۹۰ روز.
  • درافت‌های غیرفعال.

داده‌هایی که هرگز نباید حذف شوند

  • جداول اصلی وردپرس: wp_posts, wp_users, wp_options و غیره.
  • تنظیمات سایت در wp_options.
  • نوشته‌ها، برگه‌ها و رسانه‌های منتشرشده.
  • کاربران فعال و داده‌های آنان.
  • سفارش‌های ووکامرس (برای انطباق مالیاتی).
  • محصولات ووکامرس.
  • پروژه‌های فعال افزونه‌ها.
  • پیکربندی و کلیدهای فعال.

ریویژن‌ها

ریویژن‌ها، نسخه‌های قبلی نوشته‌ها هستند که برای بازیابی تغییرات کاربرد دارند.

چه زمانی ایمن است؟

  • وقتی ریویژن‌های قدیمی بیش از ۹۰ روز قدمت دارند.
  • وقتی سایت بکاپ منظم دارد.
  • وقتی محدودیت ریویژن در wp-config.php تعریف شده است.

حذف ریویژن‌های قدیمی:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL 90 DAY);

ترنزینت‌ها

ترنزینت‌ها داده‌های موقتی هستند که به‌طور خودکار بازسازی می‌شوند.

حذف ترنزینت‌های منقضی:

DELETE a, b FROM wp_options a, wp_options b
WHERE a.option_name LIKE '_transient_%'
AND a.option_name NOT LIKE '_transient_timeout_%'
AND b.option_name = CONCAT('_transient_timeout_', SUBSTRING(a.option_name, 12))
AND b.option_value < UNIX_TIMESTAMP();

اسپم و Trash

اسپم‌ها و Trashها، حجم قابل توجهی از جدول wp_comments و wp_posts را اشغال می‌کنند.

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';
DELETE FROM wp_posts WHERE post_status = 'trash';

داده‌های یتیم

داده‌های یتیم، رکوردهایی هستند که به والد موجود اشاره نمی‌کنند.

حذف postmeta یتیم:

DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts p ON pm.post_id = p.ID WHERE p.ID IS NULL;

حذف commentmeta یتیم:

DELETE cm FROM wp_commentmeta cm LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID WHERE c.comment_ID IS NULL;

حذف usermeta یتیم:

DELETE um FROM wp_usermeta um LEFT JOIN wp_users u ON um.user_id = u.ID WHERE u.ID IS NULL;

Sessionهای ووکامرس

Sessionهای منقضی ووکامرس در جدول wp_woocommerce_sessions تجمع می‌کنند:

DELETE FROM wp_woocommerce_sessions WHERE session_expiry < UNIX_TIMESTAMP();

جدول‌های افزونه‌های حذف‌شده

افزونه‌های حذف‌شده، اغلب جدول‌های خود را در دیتابیس باقی می‌گذارند.

  • شناسایی جدول‌های مشکوک با SHOW TABLES;
  • بررسی مستندات افزونه برای نام جدول‌ها.
  • تأیید عدم استفاده پیش از حذف.

لاگ‌ها

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

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

Auto-drafts

Auto-draftها، نسخه‌های موقتی هستند که هنگام نوشتن ساخته می‌شوند.

DELETE FROM wp_posts WHERE post_status = 'auto-draft';

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

افزونه‌های مختلف، داده‌های منقضی ذخیره می‌کنند:

  • کدهای تخفیف منقضی ووکامرس.
  • لاگ‌های منقضی.
  • پیش‌نویس‌های قدیمی.
  • لیست‌های ایمیل منقضی.

ابزارهای پاک‌سازی ایمن

  • WP-Sweep: پاک‌سازی دقیق و جامع.
  • WP-Optimize: مدیریت جامع دیتابیس.
  • Advanced Database Cleaner: مدیریت پیشرفته.
  • Optimize Database after Deleting Revisions: سبک و کارآمد.

پشتیبان‌گیری پیش از پاک‌سازی

بکاپ کامل پیش از هر عملیات، اصولی‌ترین اقدام است:

mysqldump -u username -p database_name > backup.sql

اشتباهات خطرناک

اشتباهاثر عملیاتی
حذف بدون بکاپاز دست رفتن داده
حذف جداول اصلیسایت از کار می‌افتد
حذف ترنزینت‌های ضروریمشکل در عملکرد
حذف usermeta فعالخطا در کاربران
حذف سفارش‌های ووکامرسمشکل مالیاتی
حذف جدول‌های افزونه‌های فعالخطای افزونه
اجرای کوئری نادرستاز دست رفتن داده حیاتی
نبود تست پیش از اجراخطای غیرقابل بازگشت
نبود پایش پس از پاک‌سازیعدم تشخیص مشکل
نبود مستندسازیعدم امکان ردیابی

پرسش‌های پرتکرار

چه داده‌هایی را می‌توان با اطمینان حذف کرد؟

ریویژن‌های قدیمی، ترنزینت‌های منقضی، اسپم‌ها، Trash، Sessionهای منقضی ووکامرس و postmeta یتیم.

چه داده‌هایی هرگز نباید حذف شوند؟

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

آیا حذف ترنزینت‌ها ایمن است؟

بله، ترنزینت‌های منقضی به‌طور خودکار بازسازی می‌شوند.

چگونه داده‌های یتیم را حذف کنم؟

با کوئری‌های JOIN که رکوردهای بدون والد را شناسایی و حذف می‌کنند.

آیا افزونه‌های پاک‌سازی ایمن هستند؟

افزونه‌های معتبر مانند WP-Sweep و WP-Optimize معمولاً ایمن هستند، اما بکاپ ضروری است.

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

ماهانه برای سایت‌های فعال.

آیا Auto-draftها قابل حذف هستند؟

بله، Auto-draftهای قدیمی را می‌توان با اطمینان حذف کرد.

چگونه از حذف ناخواسته جلوگیری کنم؟

با بکاپ کامل، تست در محیط آزمایشگاهی و مرور دقیق کوئری پیش از اجرا.

پایان‌بندی

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

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

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

اگر در پروژه‌های خود تجربه‌ای از پاک‌سازی دیتابیس داشته‌اید، تجربه‌تان را در دیدگاه‌ها بنویسید. 🗄️