Database Performance là khả năng website tìm, đọc và lưu dữ liệu. Dữ liệu này gồm sản phẩm, bài viết và đơn hàng. Khi việc lấy dữ liệu chậm, khách có thể chờ lâu lúc tìm sản phẩm hoặc đặt hàng. Nhưng website chậm chưa chắc do cơ sở dữ liệu.
Chủ doanh nghiệp nên làm gì? Ghi chức năng bị chậm và thời điểm xảy ra. Yêu cầu kỹ thuật kiểm tra bằng số liệu trước khi nâng máy chủ (hosting) hoặc xóa dữ liệu. Không tự sửa cơ sở dữ liệu trên website đang có khách sử dụng.
Website chậm có phải do hosting yếu hoặc cơ sở dữ liệu lớn?
Không thể kết luận từ dung lượng cơ sở dữ liệu hay số bài viết. Một truy vấn quét quá nhiều bản ghi có thể khiến trang chậm. Ngược lại, một cơ sở dữ liệu lớn vẫn có thể phản hồi tốt nếu được thiết kế phù hợp.
Ví dụ giả định: trang chủ mở nhanh nhưng khách chờ lâu khi lọc sản phẩm. Trang chủ có thể đã được lưu sẵn, trong khi trang lọc phải tra dữ liệu mới. Cần đo thời gian lọc trước khi kết luận.
| Người dùng gặp lỗi gì? | Nên kiểm tra trước |
|---|---|
| Tìm sản phẩm hoặc lọc kết quả chậm | Việc tìm dữ liệu và phần mở rộng liên quan |
| Giỏ hàng, đặt hàng chậm | Thời gian xử lý đơn, kết nối và trạng thái thanh toán |
| Quản trị WordPress tải rất lâu | Thiết lập website và công việc chạy tự động |
| Toàn bộ website đều chậm | Kiểm tra đường truyền, mã xử lý và máy chủ |
Nếu chưa biết lớp nào gây chậm, hãy bắt đầu bằng quy trình tìm nguyên nhân website chậm bất thường. Bài này tập trung khi dữ liệu hoặc cách truy vấn là điểm nghi vấn.
Chủ doanh nghiệp cần gửi đội kỹ thuật thông tin gì?
- Đường dẫn: trang hoặc thao tác bị chậm.
- Thời gian: lúc xảy ra và có lặp lại không.
- Ảnh hưởng: khách không tìm, liên hệ hay đặt hàng được.
- Kết quả mong muốn: chức năng nhanh hơn, dữ liệu vẫn chính xác.

Dấu hiệu nào cho thấy nên kiểm tra dữ liệu?
Nếu hình ảnh và trang giới thiệu vẫn nhanh nhưng tìm kiếm, lọc sản phẩm hoặc quản trị chậm, đó là dấu hiệu cần đo phần dữ liệu. Chưa thể kết luận cơ sở dữ liệu gây lỗi khi chưa đo thời gian xử lý.
Dành cho kỹ thuật: đo truy vấn nào gây chậm
Năm dấu hiệu kỹ thuật cần phân biệt
- TTFB: thời gian chờ byte đầu; còn phụ thuộc PHP và mạng.
- Latency: độ trễ cần đo theo chức năng và truy vấn.
- Lock/wait: yêu cầu phải đợi khóa dữ liệu.
- Connection: kết nối cơ sở dữ liệu có thể phải chờ.
- I/O: khả năng đọc, ghi dữ liệu và tải lưu trữ.
Slow Query Log là nhật ký các truy vấn vượt ngưỡng đã cấu hình. APM theo dõi thời gian trong từng yêu cầu ứng dụng. Hai nguồn hỗ trợ tìm vấn đề, nhưng không thay thế việc kiểm tra nguyên nhân.
Theo MySQL 8.4, Slow Query Log mặc định tắt; long_query_time mặc định là 10 giây. Đó là mặc định của phiên bản MySQL này, không phải cấu hình site đang dùng. Truy vấn ngắn hơn vẫn có thể gây chậm nếu bị gọi quá nhiều lần. Chỉ bật log có kiểm soát và hạn chế người đọc dữ liệu nhật ký.
| Thông số | Đội kỹ thuật cần tìm câu trả lời |
|---|---|
| Query duration | Một truy vấn mất bao lâu, trong yêu cầu nào? |
| Frequency và query count | Truy vấn đó chạy bao nhiêu lần trên một trang? |
| Rows examined | Máy chủ phải xem xét bao nhiêu hàng dữ liệu? |
| Lock / wait | Có thao tác nào đang giữ khóa khiến yêu cầu khác chờ? |
| Connection / pool | Số kết nối đang sử dụng, có phải chờ kết nối? |
| I/O và CPU | Có thiếu tài nguyên đọc, ghi hoặc xử lý dữ liệu? |
N+1 query là trường hợp một thao tác gọi thêm nhiều truy vấn lặp lại. Mỗi truy vấn có thể nhanh, nhưng tổng hàng trăm lượt làm trang chậm. Vì vậy cần xem cả số lượng và tổng thời gian.
Với WordPress, Query Monitor giúp kỹ thuật xem truy vấn chậm, trùng và thành phần tạo ra. Chỉ sử dụng trong điều kiện bảo mật phù hợp, tránh để thông tin chẩn đoán lộ cho khách.
Index, kết nối và cache: xử lý loại vấn đề nào?
Index giống mục lục giúp cơ sở dữ liệu tìm một số bản ghi nhanh hơn. Nhưng thêm sai chỉ mục có thể tốn dung lượng và làm chậm thao tác ghi. Không nên thêm chỉ vì bảng lớn.
Dùng EXPLAIN MySQL để xem kế hoạch truy vấn, chỉ mục và độ chọn lọc (cardinality). EXPLAIN ANALYZE thực sự chạy truy vấn, nên cần đánh giá tác động và ưu tiên môi trường thử. Không chạy lệnh ghi hoặc xóa dữ liệu thật chỉ để đo tốc độ.
Connection là kết nối tới cơ sở dữ liệu. Nếu hệ thống có connection pool, cần xem có phải chờ kết nối không. Khi nhiều yêu cầu đồng thời (concurrency), transaction giữ khóa lâu có thể gây chậm. Không mặc định mọi WordPress đều dùng connection pool. Xem Resource Saturation nếu tài nguyên gần đầy.
Cache giữ kết quả dùng lại để giảm truy vấn. Tuy nhiên, khi cache không có dữ liệu cần tìm (cache miss), tải có thể dồn xuống máy chủ gốc. Xem Cache & CDN để phân biệt từng lớp. Cache không sửa được truy vấn viết sai.

WordPress và WooCommerce cần lưu ý gì?
Các trường hợp thường gặp gồm plugin gọi lặp truy vấn, tìm kiếm trong bảng dữ liệu phụ (meta query), tùy chọn tự nạp và tác vụ nền chạy quá nhiều. Không mặc định một plugin có dữ liệu lớn là thủ phạm.
Bảng wp_options lưu thiết lập; tiền tố bảng có thể khác. Một số mục tự nạp (autoload) theo yêu cầu. Từ WordPress 6.6, Site Health mặc định cảnh báo khi autoload đạt 800.000 byte; ngưỡng có thể thay đổi. Cảnh báo chỉ giúp khoanh vùng, chưa chứng minh gây chậm. WooCommerce khuyên kiểm tra trước khi chỉnh; không tự xóa dữ liệu hoặc chỉ tìm giá trị autoload='yes' trên WordPress mới.
Object cache như Redis hoặc Memcached có thể giảm việc đọc lặp từ cơ sở dữ liệu. Theo WordPress, bộ nhớ đệm dữ liệu khác bộ nhớ đệm nguyên trang. Phải kiểm tra cấu hình hiện có, không mặc định chỉ bật một tùy chọn là đủ.
Với WooCommerce, HPOS có thể lưu đơn trong các bảng riêng. WooCommerce cho biết tính năng mặc định ở cửa hàng cài mới từ 8.2; cửa hàng cũ có thể khác. Trước khi chuyển đổi, phải kiểm tra plugin tương thích và đồng bộ đơn theo hướng dẫn kỹ thuật. HPOS không phải cách chữa mọi nguyên nhân gây chậm.
Không tự đổi chế độ lưu đơn, xóa bảng hay chạy lệnh tối ưu hàng loạt trên website đang bán hàng. Đội kỹ thuật phải sao lưu, thử phương án và bảo vệ đơn mới trước.
Quy trình 7 bước xác định và sửa cơ sở dữ liệu chậm
- 1. Khoanh vùng: ghi URL, chức năng chậm và thời điểm bắt đầu.
- 2. Đo mức bình thường (baseline): ghi số liệu cùng chức năng và điều kiện tải trước khi sửa.
- 3. Tìm dấu vết: xem Slow Query Log, APM hoặc công cụ theo dõi theo chức năng.
- 4. Xác định nguyên nhân: truy vấn lặp, chỉ mục, kết nối, khóa, I/O hoặc cache.
- 5. Thử sửa an toàn: giữ bản sao có thể khôi phục, dùng môi trường thử và dữ liệu phù hợp.
- 6. Cập nhật có phương án quay lại (rollback): đo sau sửa, theo dõi lỗi và bảo vệ giao dịch.
- 7. Kiểm tra khi đông khách: nếu chỉ chậm khi tải cao, dùng Capacity Planning & Load Testing.
Chủ doanh nghiệp nghiệm thu kết quả thế nào?
| Yêu cầu báo cáo | Bằng chứng mong đợi |
|---|---|
| Đã tìm được nguyên nhân | Trang hoặc chức năng chậm và số liệu trước khi sửa |
| Đã sửa đúng phần cần thiết | Thay đổi được mô tả, không xóa dữ liệu tùy tiện |
| Đã kiểm tra lại | Đo cùng thao tác, tải và trạng thái cache tương đương; thử nhiều lần |
| Dữ liệu an toàn | Đơn, tồn kho, biểu mẫu và đăng nhập còn hoạt động |
| Có phương án dự phòng | Người phụ trách và cách quay lại nếu phát sinh lỗi |
Không chọn kết quả đẹp nhất của một lần đo để chứng minh tối ưu thành công. Cần so cùng điều kiện và theo dõi qua giám sát website. Đơn hàng, biểu mẫu và đăng nhập vẫn phải hoạt động đúng.
Câu hỏi thường gặp
Có cần nâng hosting ngay khi website chậm?
Chưa chắc. Nếu điểm nghẽn do truy vấn lặp hoặc khóa dữ liệu, tăng tài nguyên có thể chỉ che lỗi tạm thời. Hãy kiểm tra bằng chứng trước.
Dọn cơ sở dữ liệu có làm website nhanh lên không?
Có thể có ích khi dữ liệu thừa thật sự ảnh hưởng truy vấn. Nhưng xóa dữ liệu để giảm dung lượng chưa chắc tăng tốc. Xóa nhầm cấu hình hoặc đơn hàng có thể gây thiệt hại.
Có nên bật Redis hay thêm index để tăng tốc?
Chỉ sau khi xác định đúng nguyên nhân. Các thay đổi này có thể hữu ích nhưng phải kiểm tra tương thích, mức cải thiện và ảnh hưởng tới dữ liệu.
Kết luận
Database Performance là một phần của Website Performance & Reliability. Đừng hỏi “cần dọn database không?” trước khi biết truy vấn nào làm khách chờ lâu. Đo đúng nguyên nhân, thử thay đổi an toàn rồi nghiệm thu mới là cách cải thiện bền vững.
Đoàn Trình Dục là Giảng viên Khoa Công nghệ Thông tin tại Đại học Công nghệ Sài Gòn (STU), với hơn 10 năm kinh nghiệm thực chiến trong các lĩnh vực Mạng máy tính, Marketing Online, SEO và Bảo mật hệ thống.
Với nền tảng sư phạm và kinh nghiệm tư vấn cho nhiều doanh nghiệp, thầy chuyên sâu vào việc xây dựng các giải pháp kỹ thuật số toàn diện và hiệu quả.

