Optimize Database WordPress ลบข้อมูลขยะ เพิ่มความเร็ว

WordPress Database มีแนวโน้มสะสมข้อมูลขยะโดยอัตโนมัติเมื่อเวลาผ่านไป ไม่ว่าจะเป็น Post Revisions หลายสิบ Version ต่อโพสต์, Transients ที่หมดอายุแล้ว, Auto-Draft ที่ถูกลืม, Spam Comments และ Orphaned Metadata การสะสมข้อมูลเหล่านี้ทำให้ Database Table ใหญ่ขึ้นโดยไม่จำเป็น ทำให้ Query ช้าลง

บทความนี้จะแนะนำวิธี Optimize WordPress Database อย่างถูกต้องและปลอดภัย ทั้งด้วย Plugin และ phpMyAdmin

สำคัญมาก: ก่อน Optimize Database ทุกครั้ง ให้ Backup Database ก่อนเสมอ แม้ว่าการ Optimize ด้วย Plugin ที่แนะนำจะปลอดภัย แต่การมี Backup ไว้ย่อมดีกว่าในทุกกรณี

ข้อมูลขยะใน WordPress Database มีอะไรบ้าง?

ประเภทคำอธิบายลบได้?
Post Revisionsสำเนา Draft ทุกครั้งที่บันทึก — สะสมได้หลายสิบต่อโพสต์ได้ (เก็บล่าสุด 3-5 ไว้)
Auto DraftsDraft ที่ WordPress สร้างอัตโนมัติขณะแก้ไขได้
Trashed Posts/Pagesโพสต์ที่ลบไปแล้วแต่ยังอยู่ใน Trashได้
Spam CommentsComment ที่ถูก Mark เป็น Spamได้
Trashed CommentsComment ที่ลบไปแล้วแต่ยังอยู่ใน Trashได้
Expired TransientsCache ชั่วคราวที่ Plugin เก็บใน Database หมดอายุแล้วได้
Orphaned MetadataMetadata ที่ผูกกับโพสต์/User ที่ถูกลบไปแล้วได้ (ตรวจสอบก่อน)
Unused TablesTable ที่ Plugin เก่าสร้างไว้แต่ถูก Uninstall แล้วได้ (ตรวจสอบก่อน)

วิธีที่ 1 — ด้วย WP-Optimize Plugin (แนะนำ)

WP-Optimize เป็น Plugin ที่ครบครันที่สุดสำหรับการ Optimize WordPress มีผู้ใช้งานกว่า 1 ล้านเว็บ รวมฟีเจอร์ Database Cleanup, Cache และ Image Optimization ไว้ในที่เดียว

ขั้นตอนติดตั้งและใช้งาน

  1. WordPress Admin → Plugins → Add New → ค้นหา WP-Optimize
  2. Install Now → Activate
  3. ไปที่ WP-Optimize → Database
  4. เลือก Optimization ที่ต้องการ — เลือกอย่างน้อย:
    • Clean all post revisions
    • Clean all auto-draft posts
    • Clean all trashed posts
    • Remove spam and trashed comments
    • Remove expired transient options
  5. คลิก Run all selected optimizations
  6. รอสักครู่ WP-Optimize จะแสดงสรุปว่าลบข้อมูลไปกี่ Row

ตั้งเวลาอัตโนมัติ: WP-Optimize มีฟีเจอร์ Schedule ให้รัน Database Cleanup อัตโนมัติทุกสัปดาห์หรือทุกเดือน ไปที่ WP-Optimize → Settings → Schedule แล้วเปิดใช้งาน

วิธีที่ 1b — ด้วย Advanced Database Cleaner Plugin

สำหรับผู้ที่ต้องการควบคุมรายละเอียดของการลบข้อมูลมากกว่า WP-Optimize สามารถใช้ Advanced Database Cleaner ซึ่งให้ตัวเลือก Cleanup ที่ละเอียดกว่า เช่น การแสดง Orphaned Tables จาก Plugin ต่างๆ ให้เห็นชัดเจนก่อนลบ

ขั้นตอนการใช้งาน Advanced Database Cleaner

  1. WordPress Admin → Plugins → Add New → ค้นหา Advanced Database Cleaner
  2. Install Now → Activate
  3. ไปที่ WP Admin → Advanced DB Cleaner
  4. เลือก Tab General Clean Up เพื่อดูรายการข้อมูลขยะทั้งหมดที่ตรวจพบ
  5. Tab Orphaned Tables จะแสดง Database Table ที่ Plugin เก่าทิ้งไว้ ตรวจสอบก่อนลบ
  6. คลิก Delete หรือ Clean สำหรับ Item ที่ต้องการลบ
Plugin จุดเด่น เหมาะกับ
WP-Optimize All-in-One: DB + Cache + Image เว็บทั่วไปที่ต้องการครบจบที่เดียว
Advanced Database Cleaner ตรวจ Orphaned Table ละเอียด Developer/Admin ที่ต้องการ Fine Control
WP-Sweep เบาและใช้ง่าย ไม่มี Upsell ผู้ใช้ที่ต้องการ Plugin เล็กกะทัดรัด

วิธีที่ 2 — ด้วย phpMyAdmin (Advanced)

วิธีนี้ให้ควบคุมได้ละเอียดกว่า เหมาะสำหรับผู้ที่ต้องการดูและจัดการ Database ด้วยตัวเอง สามารถเข้า phpMyAdmin ได้ผ่าน DirectAdmin บน AsiaGB Hosting

ขั้นตอน Optimize ผ่าน phpMyAdmin

  1. DirectAdmin → Databases → phpMyAdmin → เลือก Database ของ WordPress
  2. เลือก Table ทั้งหมด (Check All) ที่ด้านล่างของรายการ Table
  3. ใน Dropdown "With selected" เลือก Optimize table
  4. คลิก Go — phpMyAdmin จะ Defragment และ Optimize ทุก Table

SQL ลบข้อมูลขยะโดยตรง

สำหรับผู้ต้องการควบคุมเต็มที่ สามารถใช้ SQL Query ต่อไปนี้ใน phpMyAdmin (เปลี่ยน wp_ เป็น Table Prefix ของเว็บ):

-- ลบ Post Revisions
DELETE FROM wp_posts WHERE post_type = 'revision';

-- ลบ Auto Drafts
DELETE FROM wp_posts WHERE post_status = 'auto-draft';

-- ลบ Trashed Posts
DELETE FROM wp_posts WHERE post_status = 'trash';

-- ลบ Spam Comments
DELETE FROM wp_comments WHERE comment_approved = 'spam';

-- ลบ Expired Transients
DELETE FROM wp_options WHERE option_name LIKE '_transient_%'
  AND option_name NOT LIKE '_transient_timeout_%'
  AND option_value IS NOT NULL;

-- ลบ Orphaned Post Metadata
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;

คำเตือน: ก่อนรัน SQL Query ใดๆ ต้อง Backup Database ก่อนเสมอ การ Query ผิดอาจลบข้อมูลสำคัญโดยไม่สามารถกู้คืนได้

จำกัด Post Revisions ไม่ให้สะสมใหม่

หลัง Cleanup แล้ว ควรจำกัดจำนวน Post Revision ที่ WordPress เก็บไว้ด้วย เพื่อป้องกันการสะสมใหม่ เพิ่มบรรทัดต่อไปนี้ใน wp-config.php:

// เก็บ Revision แค่ 3 Version ล่าสุดต่อโพสต์
define('WP_POST_REVISIONS', 3);

// ปิด Revision ทั้งหมด (ไม่แนะนำสำหรับเว็บที่มีหลายคนแก้ไข)
// define('WP_POST_REVISIONS', false);

สัญญาณที่บอกว่า WordPress Database ของคุณต้องการ Optimize

บางครั้งเจ้าของเว็บอาจไม่รู้ว่า Database กำลังมีปัญหาจนกระทั่งเว็บเริ่มช้าลงอย่างเห็นได้ชัด สัญญาณเหล่านี้บ่งบอกว่าถึงเวลา Optimize Database แล้ว:

ความเข้าใจผิดที่พบบ่อยเกี่ยวกับ WordPress Database Optimize

มีความเข้าใจผิดหลายอย่างเกี่ยวกับการ Optimize WordPress Database ที่ควรทำความเข้าใจก่อนดำเนินการ:

"Optimize Database จะทำให้เว็บเร็วขึ้นมาก"

จริงบางส่วน การ Optimize ช่วยลด Database Overhead และ Query Time แต่ถ้าเว็บช้าเพราะ Plugin ที่ Query ไม่มีประสิทธิภาพ, รูปภาพขนาดใหญ่, หรือ Hosting Tier ที่ต่ำเกินไป การ Optimize Database เพียงอย่างเดียวอาจไม่ได้ช่วยมากนัก ควรใช้ร่วมกับการ Caching, Image Optimization และ Plugin Audit

"ควรลบ Post Revisions ทั้งหมดออก"

ไม่แนะนำโดยสิ้นเชิง Post Revision มีประโยชน์มากเมื่อต้องการกู้คืนเนื้อหาที่แก้ไขผิดพลาด ควรเก็บ Revision ล่าสุดไว้ 3-5 Version แทนการลบทั้งหมด เพื่อให้มี Version ย้อนกลับได้เมื่อจำเป็น

"Optimize Database ทุกวันจะดีกว่า"

ทำบ่อยเกินไปไม่ได้ช่วยอะไรเพิ่ม เพราะการ Cleanup ทุกวันจะวน Loop ลบข้อมูลขยะที่เพิ่งสะสมมาไม่กี่ชั่วโมง ซึ่งมีปริมาณน้อยมาก การทำทุก 1-3 เดือนเพียงพอสำหรับเว็บทั่วไป

การตั้งค่า wp-config.php เพิ่มเติมเพื่อลด Database Bloat

นอกจากจำกัด Post Revisions แล้ว ยังมีค่า wp-config.php อื่นที่ช่วยลดขนาด Database ในระยะยาวได้ ดังนี้:

// เก็บ Revision แค่ 3 Version ล่าสุดต่อโพสต์
define('WP_POST_REVISIONS', 3);

// ปิด Auto-Save ทุก 60 วินาที (ลดความถี่ลง)
define('AUTOSAVE_INTERVAL', 300); // บันทึกทุก 5 นาทีแทน

// ลบ Trash อัตโนมัติหลัง 14 วัน (แทนที่จะรอ 30 วัน)
define('EMPTY_TRASH_DAYS', 14);

หมายเหตุ: ค่า AUTOSAVE_INTERVAL ที่นานขึ้นจะลดจำนวน Auto-Draft ที่ WordPress สร้าง แต่ถ้าเบราว์เซอร์ค้างกะทันหัน อาจสูญเสียเนื้อหาที่พิมพ์ล่าสุดได้มากขึ้น เลือกค่าที่เหมาะกับ Workflow ของตัวเอง

การ Monitor ขนาด Database ระยะยาว

หลังจาก Optimize แล้ว ควรติดตาม Database Size อย่างสม่ำเสมอเพื่อให้รู้ว่า Cleanup ถัดไปควรทำเมื่อไร สามารถดูขนาด Database ได้หลายวิธี:

ดูจาก phpMyAdmin

เปิด phpMyAdmin → เลือก Database ของ WordPress → แถวล่างสุดจะแสดงขนาดรวมของทุก Table ใน "Data" และ "Index" columns ดูค่า "Overhead" ที่ปรากฏใน Status column ของแต่ละ Table — ถ้ามีค่าสูงแปลว่า Table นั้นต้องการ Optimize

ดูจาก WP-Optimize Dashboard

WP-Optimize แสดงกราฟ Database Size ตลอดเวลาใน Dashboard Tab ทำให้เห็นแนวโน้มการเพิ่มขึ้นของ Database ได้ง่ายโดยไม่ต้องเปิด phpMyAdmin

SQL Query ดูขนาดแต่ละ Table

SELECT table_name,
       ROUND(((data_length + index_length) / 1024 / 1024), 2) AS size_mb,
       ROUND((data_free / 1024 / 1024), 2) AS overhead_mb
FROM information_schema.TABLES
WHERE table_schema = 'your_database_name'
ORDER BY size_mb DESC;

เปลี่ยน your_database_name เป็นชื่อ Database WordPress ของคุณ ผลลัพธ์จะแสดง Table ที่ใหญ่ที่สุดและมี Overhead มากที่สุดไว้ด้านบน

ผลลัพธ์ที่คาดหวัง

หลัง Optimize Database เว็บที่ใช้ WordPress มานานหลายปีมักจะเห็นผลที่ชัดเจนและวัดได้ ทั้งในแง่ขนาด Database และความเร็วในการโหลดหน้าเว็บ โดยเฉพาะหน้า Admin Dashboard ที่มักจะดีขึ้นอย่างเห็นได้ชัดหลังลบ Transient ที่หมดอายุออกไป:

Hosting WordPress พร้อม SSD และ phpMyAdmin ราคาเริ่มต้น 500 บาท/ปี

AsiaGB Hosting มี phpMyAdmin, DirectAdmin และ Softaculous ติดตั้ง WordPress ง่าย 1 คลิก พร้อมรองรับ WP-Optimize และ Plugin ทุกตัว

ดูแพ็กเกจ Hosting →