Chuyển đến nội dung
Tối ưu hóa cơ sở dữ liệu WordPress: Cách dọn dẹp và tăng tốc cơ sở dữ liệu của bạn
Hiệu suất WordPress📋 Hướng dẫn chi tiết

Tối ưu hóa cơ sở dữ liệu WordPress: Cách dọn dẹp và tăng tốc cơ sở dữ liệu của bạn

Erik KellerErik KellerCập nhật ngày: 15 phút đọc506 lượt xem

Mỗi lần tải trang, gửi biểu mẫu, hoạt động của plugin và phiên người dùng trong WordPress đều liên quan đến các truy vấn cơ sở dữ liệu. Theo thời gian, cơ sở dữ liệu tích lũy các dữ liệu không cần thiết: các phiên bản bài viết cũ, các tạm thời đã hết hạn, siêu dữ liệu mồ côi, bình luận spam và các bảng không sử dụng từ các plugin đã bị vô hiệu hóa. Sự tích lũy này làm chậm các truy vấn, tăng kích thước sao lưu và giảm hiệu suất tổng thể của trang web. Hướng dẫn này sẽ đề cập đến cách xác định sự tích lũy trong cơ sở dữ liệu, dọn dẹp nó một cách an toàn và ngăn chặn nó quay trở lại.

Những gì WordPress lưu trữ trong cơ sở dữ liệu

Hiểu những gì có trong cơ sở dữ liệu của bạn giúp bạn xác định những gì có thể được xóa một cách an toàn. Một cài đặt WordPress tiêu chuẩn sử dụng 12 bảng chính, và các plugin thêm các bảng của riêng chúng khi cần thiết.

Bảng Lưu trữ Nguồn gốc tích lũy phổ biến
wp_posts Bài viết, trang, phiên bản, tệp đính kèm, loại bài viết tùy chỉnh Các phiên bản bài viết, bản nháp tự động
wp_postmeta Siêu dữ liệu cho bài viết (trường tùy chỉnh, dữ liệu plugin) Siêu dữ liệu mồ côi từ các bài viết đã xóa
wp_options Cài đặt trang web, cài đặt plugin, tạm thời Tạm thời đã hết hạn, cài đặt plugin cũ
wp_comments Bình luận và trackbacks Bình luận spam, bình luận đã xóa
wp_commentmeta Siêu dữ liệu cho bình luận Siêu dữ liệu Akismet cho các bình luận đã xóa
wp_usermeta Siêu dữ liệu người dùng Mã phiên, dữ liệu người dùng của plugin
wp_termmeta Siêu dữ liệu cho danh mục và thẻ Siêu dữ liệu thuật ngữ mồ côi

Các nguồn gốc phổ biến của sự tích lũy trong cơ sở dữ liệu

Các phiên bản bài viết

WordPress lưu một phiên bản mỗi khi bạn nhấp vào "Lưu nháp" hoặc "Cập nhật" trên một bài viết hoặc trang. Một bài viết được chỉnh sửa 50 lần sẽ có 50 phiên bản được lưu trong bảng wp_posts, mỗi phiên bản có một tập hợp các mục postmeta riêng. Trên một trang web có hàng trăm bài viết, các phiên bản có thể chiếm hàng nghìn hàng trong cơ sở dữ liệu không cần thiết.

Tạm thời

Tạm thời là dữ liệu tạm thời được lưu trữ trong bảng wp_options bởi WordPress core và các plugin. Chúng có thời gian hết hạn, nhưng WordPress không tự động xóa các tạm thời đã hết hạn. Chúng tích lũy theo thời gian và có thể làm tăng đáng kể bảng tùy chọn, đặc biệt là trên các trang có nhiều plugin.

Dữ liệu mồ côi

Khi bạn xóa một bài viết, siêu dữ liệu của nó (các mục wp_postmeta) có thể không bị xóa. Tương tự, việc xóa bình luận, người dùng hoặc thuật ngữ có thể để lại các hàng siêu dữ liệu mồ côi. Các plugin đã bị vô hiệu hóa và xóa thường để lại các bảng cơ sở dữ liệu của chúng, chiếm không gian và làm rối cơ sở dữ liệu của bạn.

Nội dung spam và đã xóa

Bình luận spam, bài viết đã xóa và bình luận đã xóa nằm trong cơ sở dữ liệu cho đến khi được xóa thủ công. Các trang web có Akismet hoặc các bộ lọc spam khác có thể tích lũy hàng nghìn bình luận spam cần được dọn dẹp định kỳ.

Bản nháp tự động

WordPress tạo các bài viết bản nháp tự động khi bạn nhấp vào "Thêm mới" trong trình chỉnh sửa bài viết, ngay cả khi bạn không bao giờ xuất bản. Những cái này tích lũy theo thời gian và không có mục đích gì sau khi phiên chỉnh sửa kết thúc.

Dọn dẹp cơ sở dữ liệu thủ công qua SQL

Đối với những người quen thuộc với SQL, bạn có thể dọn dẹp trực tiếp bằng cách sử dụng phpMyAdmin hoặc một khách hàng cơ sở dữ liệu. Luôn sao lưu cơ sở dữ liệu của bạn trước khi chạy các truy vấn dọn dẹp.

Xóa các phiên bản bài viết

-- Xóa tất cả các phiên bản bài viết
DELETE FROM wp_posts WHERE post_type = 'revision';

-- Xóa siêu dữ liệu mồ côi (siêu dữ liệu cho các bài viết đã xóa)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;

Dọn Dẹp Transients

-- Xóa các transient đã hết hạn
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();

-- Xóa dữ liệu transient cho các transient đã hết hạn
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';

Xóa Bình Luận Spam và Đã Xóa

-- Xóa bình luận spam
DELETE FROM wp_comments WHERE comment_approved = 'spam';

-- Xóa bình luận đã xóa
DELETE FROM wp_comments WHERE comment_approved = 'trash';

-- Xóa metadata bình luận mồ côi
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;

Dọn Dẹp Cơ Sở Dữ Liệu Dựa Trên Plugin

Nếu bạn thích phương pháp dựa trên GUI, một số plugin xử lý tối ưu hóa cơ sở dữ liệu với khả năng lập lịch:

WP-Optimize

WP-Optimize là một plugin miễn phí dọn dẹp các bản sửa đổi, bản nháp, spam, transients và dữ liệu mồ côi. Nó cũng tối ưu hóa các bảng cơ sở dữ liệu và hỗ trợ dọn dẹp theo lịch. Phiên bản Pro thêm hỗ trợ đa trang và lập lịch nâng cao.

Tối Ưu Hóa Cơ Sở Dữ Liệu WP Rocket

WP Rocket bao gồm một tab Cơ Sở Dữ Liệu xử lý các bản sửa đổi, bản nháp tự động, bài viết đã xóa, bình luận spam, transients và tối ưu hóa bảng. Vì WP Rocket chủ yếu là một plugin bộ nhớ đệm, bạn có thể dọn dẹp cơ sở dữ liệu cùng với tối ưu hóa hiệu suất trong một công cụ.

Advanced Database Cleaner

Plugin này đi sâu hơn bằng cách phát hiện các bảng bị bỏ lại bởi các plugin đã bị vô hiệu hóa và các sự kiện cron mồ côi. Nó phân loại các bảng thành lõi WordPress, bảng do plugin tạo ra, hoặc không xác định, giúp bạn xác định bảng nào an toàn để xóa.

Plugin Phiên Bản Miễn Phí Dọn Dẹp Theo Lịch Phát Hiện Bảng
WP-Optimize Cơ Bản
WP Rocket Không (Chỉ Premium) Không
Advanced Database Cleaner Chỉ Pro Có (chi tiết)

Tối Ưu Hóa wp-config.php

Ngăn chặn sự phình to của cơ sở dữ liệu từ nguồn bằng cách thêm các hằng số này vào tệp wp-config.php của bạn:

Giới Hạn Số Bản Sửa Đổi Bài Viết

// Giữ lại chỉ 5 bản sửa đổi cho mỗi bài viết (được khuyến nghị)
define( 'WP_POST_REVISIONS', 5 );

// Vô hiệu hóa hoàn toàn các bản sửa đổi (không được khuyến nghị cho hầu hết các trang)
define( 'WP_POST_REVISIONS', false );

Đặt số bản sửa đổi là 5 cung cấp đủ lịch sử để phục hồi từ những sai lầm trong khi ngăn chặn sự phát triển không giới hạn của các bản sửa đổi. Đối với các trang có nội dung nặng với các chỉnh sửa thường xuyên, 10 bản sửa đổi là một lựa chọn hợp lý.

Tự Động Xóa Thùng Rác

// Xóa thùng rác mỗi 7 ngày (mặc định là 30)
define( 'EMPTY_TRASH_DAYS', 7 );

// Vô hiệu hóa thùng rác (các mục bị xóa ngay lập tức - sử dụng cẩn thận)
define( 'EMPTY_TRASH_DAYS', 0 );

Khoảng Thời Gian Tự Động Lưu

// Tăng khoảng thời gian tự động lưu lên 5 phút (mặc định là 60 giây)
define( 'AUTOSAVE_INTERVAL', 300 );

Tối Ưu Hóa Các Bảng Cơ Sở Dữ Liệu

Sau khi xóa các hàng, hãy chạy một thao tác OPTIMIZE để khôi phục không gian bị phân mảnh:

OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;

Lên lịch cho việc này hàng tháng hoặc sau các thao tác dọn dẹp lớn. Hầu hết các plugin dọn dẹp bao gồm tối ưu hóa bảng trong các tác vụ theo lịch của họ.

Lên Lịch Dọn Dẹp Tự Động

Thiết lập lịch trình tự động: dọn dẹp tạm thời và spam hàng tuần, xóa bản sửa đổi hàng tháng và tối ưu hóa bảng, và kiểm tra hàng quý các bảng plugin không còn sử dụng. WP-Optimize và WP Rocket đều hỗ trợ dọn dẹp theo lịch trình. Cấu hình chúng trong giờ thấp điểm.

Theo Dõi Kích Thước Cơ Sở Dữ Liệu

Theo dõi kích thước cơ sở dữ liệu của bạn để phát hiện sự phình to sớm. Chạy truy vấn này để xem kích thước từng bảng:

SELECT table_name AS 'Bảng',
       ROUND(data_length / 1024 / 1024, 2) AS 'Dữ liệu (MB)',
       table_rows AS 'Hàng'
FROM information_schema.tables
WHERE table_schema = 'tên_cơ_sở_dữ_liệu_của_bạn'
ORDER BY (data_length + index_length) DESC
LIMIT 20;

Nếu wp_options vượt quá 5 MB hoặc wp_postmeta lớn hơn 100 MB, đã đến lúc dọn dẹp. Những bảng này thường xuyên được truy vấn, vì vậy kích thước của chúng ảnh hưởng trực tiếp đến thời gian tải trang.

Để có một phương pháp tối ưu hóa hiệu suất toàn diện bao gồm tối ưu hóa cơ sở dữ liệu bên cạnh bộ nhớ đệm, tối ưu hóa hình ảnh và cấu hình máy chủ, hãy đọc hướng dẫn tối ưu hóa tốc độ WordPress của chúng tôi. Để duy trì sức khỏe cơ sở dữ liệu liên tục như một phần của quy trình bảo trì của bạn, hãy xem hướng dẫn bảo trì WordPress của chúng tôi.

Để biết thêm chi tiết, hãy tham khảo tài liệu chính thức: API Cơ sở dữ liệu WordPress.

Các Câu Hỏi Thường Gặp

Xóa bản sửa đổi bài viết từ cơ sở dữ liệu có an toàn không?

Có, xóa bản sửa đổi bài viết là an toàn và không ảnh hưởng đến nội dung đã xuất bản của bạn. Bản sửa đổi là các bản chụp lịch sử của những thay đổi nháp. Khi nội dung của bạn đã hoàn tất, bản sửa đổi không còn mục đích cho hầu hết các trang web. Tuy nhiên, luôn sao lưu cơ sở dữ liệu của bạn trước khi thực hiện bất kỳ dọn dẹp nào.

Tối ưu hóa cơ sở dữ liệu có cải thiện tốc độ trang web của tôi một cách đáng kể không?

Sự cải thiện phụ thuộc vào mức độ phình to của cơ sở dữ liệu của bạn. Các trang web có hơn 50.000 hàng không còn sử dụng hoặc bảng wp_options vượt quá 10 MB sẽ thấy sự cải thiện đáng kể về thời gian tải trang và độ phản hồi của bảng điều khiển quản trị. Các trang web nhỏ hơn có thể thấy sự cải thiện không đáng kể. Tối ưu hóa cơ sở dữ liệu hoạt động cùng với bộ nhớ đệm và các biện pháp hiệu suất khác để cải thiện tổng thể.

Tôi nên tối ưu hóa cơ sở dữ liệu WordPress của mình bao lâu một lần?

Đối với các trang web hoạt động với cập nhật nội dung thường xuyên, tối ưu hóa hàng tháng là một cơ sở tốt. Các trang web có lưu lượng truy cập cao với nhiều bình luận, giao dịch WooCommerce hoặc gửi biểu mẫu có thể hưởng lợi từ việc dọn dẹp tạm thời và spam hàng tuần cùng với tối ưu hóa bảng hàng tháng.

Các plugin dọn dẹp cơ sở dữ liệu có thể làm hỏng trang web của tôi không?

Các plugin uy tín như WP-Optimize và WP Rocket được thiết kế để an toàn. Chúng nhắm đến các loại phình to đã biết (bản sửa đổi, tạm thời, spam) và không chạm vào dữ liệu thiết yếu. Rủi ro tăng lên khi xóa thủ công các bảng cụ thể của plugin. Nếu không chắc chắn liệu một bảng có cần thiết hay không, hãy để nó nguyên vị trí và tìm hiểu mục đích của nó trước.

Sự khác biệt giữa OPTIMIZE TABLE và xóa hàng là gì?

Xóa hàng sẽ loại bỏ dữ liệu khỏi bảng. OPTIMIZE TABLE sẽ tổ chức lại lưu trữ vật lý của bảng sau khi các hàng đã bị xóa, thu hồi không gian đĩa và chống phân mảnh tệp dữ liệu. Hãy nghĩ về nó như việc xóa tệp (loại bỏ hàng) so với việc chống phân mảnh ổ cứng của bạn (tối ưu hóa bảng).

Tôi nên sử dụng InnoDB hay MyISAM cho các bảng WordPress?

WordPress sử dụng InnoDB theo mặc định kể từ phiên bản 5.5, và đây là động cơ lưu trữ được khuyến nghị. InnoDB hỗ trợ khóa cấp hàng (tốt hơn cho người dùng đồng thời), giao dịch và phục hồi sau sự cố. MyISAM nhanh hơn cho các thao tác đọc nặng nhưng thiếu các tính năng đáng tin cậy này. Nếu bạn tìm thấy các bảng MyISAM trong cơ sở dữ liệu của mình, việc chuyển đổi chúng sang InnoDB thường được khuyến nghị.

Làm thế nào để tôi xác định các bảng do các plugin đã bị vô hiệu hóa để lại?

Plugin Advanced Database Cleaner có thể phát hiện và phân loại các bảng không phải lõi. Ngoài ra, hãy chạy truy vấn SQL SHOW TABLES và so sánh tên bảng với các bảng lõi của WordPress và các plugin đang hoạt động của bạn. Các bảng có tiền tố trùng với các plugin đã bị vô hiệu hóa là ứng cử viên cho việc xóa.

WooCommerce có tạo ra sự phình to cơ sở dữ liệu đáng kể không?

Có. WooCommerce lưu trữ dữ liệu đơn hàng, siêu dữ liệu sản phẩm, phiên khách hàng và các tạm thời mà phát triển đáng kể trên các cửa hàng hoạt động. Sử dụng WooCommerce > Trạng thái > Công cụ để xóa các tạm thời và phiên đã hết hạn thường xuyên.

Tối ưu hóa Hiệu Suất Từ Mọi Góc Độ

WP Rocket xử lý bộ nhớ đệm, dọn dẹp cơ sở dữ liệu và tối ưu hóa hiệu suất trong một plugin, vì vậy bạn có thể giữ cho trang web của mình hoạt động trơn tru.

Khám Phá WP Rocket →

Câu hỏi thường gặp

Tôi nên tối ưu hóa cơ sở dữ liệu WordPress của mình bao lâu một lần?
Đối với hầu hết các trang web, tối ưu hóa hàng tháng là đủ. Các trang web có lưu lượng truy cập cao với cửa hàng WooCommerce hoặc diễn đàn hoạt động nên tối ưu hóa hàng tuần. Các công cụ tự động như WP-Optimize có thể xử lý điều này theo lịch trình.
Có an toàn khi xóa các phiên bản bài viết khỏi cơ sở dữ liệu không?
Có, việc xóa các phiên bản bài viết cũ là an toàn và thường được khuyến nghị. WordPress mặc định lưu trữ không giới hạn các phiên bản, điều này có thể thêm hàng ngàn dòng. Bạn có thể giới hạn các phiên bản bằng cách thêm hằng số define REVISIONS vào wp-config.php.
Tối ưu hóa cơ sở dữ liệu có cải thiện tốc độ trang web của tôi không?
Tối ưu hóa cơ sở dữ liệu thường giảm thời gian thực thi truy vấn, từ đó cải thiện thời gian phản hồi của máy chủ (TTFB). Tác động này rõ rệt nhất trên các trang động với các truy vấn phức tạp, chẳng hạn như trang sản phẩm WooCommerce hoặc kết quả tìm kiếm.
Tôi nên tối ưu hóa cơ sở dữ liệu trước hay sau khi sao lưu?
Luôn tạo một bản sao lưu toàn bộ cơ sở dữ liệu trước khi thực hiện bất kỳ tối ưu hóa nào. Điều này đảm bảo bạn có thể khôi phục dữ liệu nếu có điều gì đó không ổn trong quá trình dọn dẹp.
Các dòng metadata mồ côi là gì và tôi có thể xóa chúng một cách an toàn không?
Các metadata mồ côi là những dòng trong các bảng meta tham chiếu đến bài viết, người dùng hoặc bình luận không còn tồn tại. Chúng an toàn để xóa và thường tích lũy từ các plugin hoặc nội dung đã bị xóa. Các công cụ như WP-Optimize có thể xác định và dọn dẹp những mục này.

Chia sẻ bài viết này

Về Tác giả

Erik Keller
Erik Keller

Chuyên gia WordPress

Chuyên gia WordPress cấp cao với kinh nghiệm phong phú trong phát triển theme, plugin và WooCommerce. Đam mê giúp doanh nghiệp thành công với các giải pháp WordPress.

WordPressWooCommercePhát triển ThemePhát triển PluginTối ưu hóa hiệu suất

Cập nhật Mới nhất

Nhận các mẹo và hướng dẫn WordPress mới nhất vào hộp thư của bạn.