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 Drafts | Draft ที่ WordPress สร้างอัตโนมัติขณะแก้ไข | ได้ |
| Trashed Posts/Pages | โพสต์ที่ลบไปแล้วแต่ยังอยู่ใน Trash | ได้ |
| Spam Comments | Comment ที่ถูก Mark เป็น Spam | ได้ |
| Trashed Comments | Comment ที่ลบไปแล้วแต่ยังอยู่ใน Trash | ได้ |
| Expired Transients | Cache ชั่วคราวที่ Plugin เก็บใน Database หมดอายุแล้ว | ได้ |
| Orphaned Metadata | Metadata ที่ผูกกับโพสต์/User ที่ถูกลบไปแล้ว | ได้ (ตรวจสอบก่อน) |
| Unused Tables | Table ที่ Plugin เก่าสร้างไว้แต่ถูก Uninstall แล้ว | ได้ (ตรวจสอบก่อน) |
วิธีที่ 1 — ด้วย WP-Optimize Plugin (แนะนำ)
WP-Optimize เป็น Plugin ที่ครบครันที่สุดสำหรับการ Optimize WordPress มีผู้ใช้งานกว่า 1 ล้านเว็บ รวมฟีเจอร์ Database Cleanup, Cache และ Image Optimization ไว้ในที่เดียว
ขั้นตอนติดตั้งและใช้งาน
- WordPress Admin → Plugins → Add New → ค้นหา WP-Optimize
- Install Now → Activate
- ไปที่ WP-Optimize → Database
- เลือก Optimization ที่ต้องการ — เลือกอย่างน้อย:
- Clean all post revisions
- Clean all auto-draft posts
- Clean all trashed posts
- Remove spam and trashed comments
- Remove expired transient options
- คลิก Run all selected optimizations
- รอสักครู่ 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
- WordPress Admin → Plugins → Add New → ค้นหา Advanced Database Cleaner
- Install Now → Activate
- ไปที่ WP Admin → Advanced DB Cleaner
- เลือก Tab General Clean Up เพื่อดูรายการข้อมูลขยะทั้งหมดที่ตรวจพบ
- Tab Orphaned Tables จะแสดง Database Table ที่ Plugin เก่าทิ้งไว้ ตรวจสอบก่อนลบ
- คลิก 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
- DirectAdmin → Databases → phpMyAdmin → เลือก Database ของ WordPress
- เลือก Table ทั้งหมด (Check All) ที่ด้านล่างของรายการ Table
- ใน Dropdown "With selected" เลือก Optimize table
- คลิก 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 Admin Dashboard โหลดนาน — โดยเฉพาะหน้า Posts, Pages หรือ Comments ที่ต้องดึงข้อมูลจาก Database จำนวนมาก
- หน้าเว็บโหลดช้าทั้งที่ Hosting ไม่มีปัญหา — ถ้า Server CPU และ RAM ยังปกติ แต่เว็บช้า Database Query อาจเป็นสาเหตุ
- WooCommerce Cart หรือ Checkout ช้า — WooCommerce เขียน Session และ Cart ลง Database บ่อยมาก ถ้า Table
wp_optionsใหญ่เกินไปจะช้าทันที - ขนาด Database บน Hosting เพิ่มเร็วผิดปกติ — ถ้าไม่ได้เพิ่ม Content มากแต่ Database ใหญ่ขึ้นเรื่อยๆ แปลว่ามีข้อมูลขยะสะสม
- Plugin แจ้งเตือน Database Error — เช่น
Error establishing a database connectionบ่อยครั้ง อาจเป็นเพราะ Query ใช้เวลานานเกิน Timeout
ความเข้าใจผิดที่พบบ่อยเกี่ยวกับ 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 ที่หมดอายุออกไป:
- ขนาด Database ลดลง 20-60% (ขึ้นอยู่กับปริมาณข้อมูลขยะที่สะสม)
- Query ที่ใช้
wp_optionsเร็วขึ้น (Transients มักเป็นตัวการหลัก) - Admin Dashboard โหลดเร็วขึ้น
- ลด Disk Usage บน Hosting
Hosting WordPress พร้อม SSD และ phpMyAdmin ราคาเริ่มต้น 500 บาท/ปี
AsiaGB Hosting มี phpMyAdmin, DirectAdmin และ Softaculous ติดตั้ง WordPress ง่าย 1 คลิก พร้อมรองรับ WP-Optimize และ Plugin ทุกตัว
ดูแพ็กเกจ Hosting →