STATUS IS UPWIKI TỐI ƯU HÓA WEBSITE
26Củng cố
Hiệu năng và phân phối / Củng cố

Hiệu năng cơ sở dữ liệu cho trang nội dung và thương mại điện tử

Cách xác định công việc cơ sở dữ liệu tốn kém, cải thiện các đường dẫn quan trọng và triển khai thay đổi hiệu năng mà không làm tăng rủi ro về độ tin cậy.

Hiệu năng cơ sở dữ liệu cho trang nội dung và thương mại điện tử — HƯỚNG DẪN TRỰC QUAN
ĐỌC
8 phút
NGUỒN
8
TÁI XÁC NHẬN
2027-03-27
đã rà soát
Người đánh giá độ tin cậy cơ sở dữ liệu với bối cảnh ứng dụng, bảo mật và phát hành
CÂU TRẢ LỜI NGẮN GỌN

Bắt đầu từ quyết định.

Bắt đầu từ yêu cầu người dùng bị chậm, sau đó xác định công việc cơ sở dữ liệu liên quan. Đo một truy vấn đại diện, kiểm tra plan của nó, và chỉ thay đổi một ràng buộc đã có bằng chứng tại một thời điểm: cấu trúc truy vấn, chỉ mục, phân trang, hành vi cache hoặc cách dùng kết nối. Kết quả vẫn phải trả về nội dung, giá, tồn kho và quyền truy cập đúng.

Với các trang nội dung và thương mại, dùng phép đo có mục tiêu và triển khai thận trọng. Đưa các phản hồi đọc có thể chia sẻ an toàn ra khỏi cơ sở dữ liệu khi phù hợp, phạm vi hóa dữ liệu cá nhân hóa đúng cách, và bảo tồn dung lượng cho hoạt động bình thường và khôi phục. Kiểm thử với lưu lượng thực tế, phát hành dần và giữ sẵn đường hồi về phiên bản ứng dụng đã biết là an toàn.

HƯỚNG DẪN TRỰC QUAN

Nhìn công việc như một hệ thống.

Dùng sơ đồ này để nối các quyết định trong bài trước khi hành động theo từng thủ thuật.

SIUCủng cố
01Tìm yêu cầu tốn kém trước khi thay đổi cơ sở dữ liệu
02Thiết kế chỉ mục theo đường truy cập bạn thực sự sử dụng
03Làm cho phân trang ổn định và tiết kiệm
04Cache kết quả đọc mà không phục vụ phản hồi sai
01

Tìm yêu cầu tốn kém trước khi thay đổi cơ sở dữ liệu

Bắt đầu từ một hành động người dùng: tải danh mục, tìm kiếm bài viết, thêm vào giỏ hàng hoặc gửi đơn. Ghi lại đường dẫn (route), số truy vấn, thời lượng trên cơ sở dữ liệu, số hàng trả về và thời gian xử lý yêu cầu. Một trang chậm cũng có thể do mã ứng dụng hoặc phụ thuộc khác, nên không chẩn đoán chỉ từ thời gian tải trang.

Plan truy vấn là lộ trình của cơ sở dữ liệu qua các bảng, chỉ mục, các phép nối, sắp xếp và tổng hợp. Trong PostgreSQL, EXPLAIN cho thấy lộ trình đó. EXPLAIN ANALYZE chạy câu lệnh và báo cáo số hàng và thời gian thực tế, vì vậy hãy dùng một truy vấn đại diện an toàn. Khoảng cách lớn giữa ước tính và thực tế về số hàng là lý do để điều tra thống kê hoặc điều kiện, chứ không phải lý do tự động để thêm chỉ mục.

Theo dõi một hành trình

Liên kết một truy vấn ứng viên với hành trình và kết quả, để báo cáo chỉ trên dashboard không át đi một checkout chậm.

Giữ cơ sở so sánh

Ghi lại thời gian trước khi thay đổi và lưu lượng tương đương mà không lưu các định danh khách hàng, token hoặc dữ liệu liên quan thẻ.

02

Thiết kế chỉ mục theo đường truy cập bạn thực sự sử dụng

Chỉ mục là cấu trúc được duy trì giúp định vị hàng hoặc trả chúng theo thứ tự; nó không phải là công tắc tăng tốc tổng quát. Bắt đầu từ các bộ lọc, khóa nối và thứ tự sắp xếp (ORDER BY) của truy vấn quan trọng rồi xác nhận chỉ mục đề xuất trên plan. PostgreSQL ghi rằng một chỉ mục B-tree phù hợp có thể thỏa mãn ORDER BY mà không cần sắp xếp riêng, đặc biệt khi có LIMIT nhỏ.

Chỉ mục tăng không gian lưu trữ và công việc ghi vì insert, update, delete phải duy trì chúng. Với truy vấn cần phần lớn bảng, quét tuần tự (sequential scan) và sắp xếp tường minh có thể nhanh hơn. Thử trên dữ liệu giống sản xuất và giữ chỉ mục chỉ khi lợi ích bù đắp chi phí.

Phù hợp với đường truy cập

Dùng các bộ lọc thực tế của truy vấn và ORDER BY, bao gồm trình phân giải tie-breaker xác định khi giao diện cần thứ tự ổn định.

Tránh chỉ mục suy đoán

Xem xét liệu chỉ mục có được dùng và nó tiêu tốn gì cho các thao tác ghi; kiểm tra lại khi dữ liệu và lưu lượng thay đổi.

03

Làm cho phân trang ổn định và tiết kiệm

Phân trang theo số trang thường dùng LIMIT kèm OFFSET. Luôn quy định một thứ tự xác định. PostgreSQL cảnh báo rằng nếu không có ORDER BY, LIMIT có thể trả một tập con không xác định; các giá trị LIMIT hoặc OFFSET khác nhau có thể cho các tập con không nhất quán vì trình tối ưu có thể chọn các plan khác nhau.

OFFSET lớn cần xem xét vì các hàng bị bỏ qua vẫn phải được tính. Với duyệt sâu danh mục, lịch sử đơn hàng, hoặc kho lưu trữ, cân nhắc phân trang bằng cursor hoặc keyset: yêu cầu các hàng sau giá trị sắp xếp ổn định cuối cùng và tie-breaker duy nhất. Định nghĩa cách các bản ghi mới hoặc bị xóa xuất hiện trước khi thay đổi giao diện.

Đặt kích thước trang cố định

Trả về trang nhỏ nhất hữu ích thay vì danh sách không giới hạn.

Tách việc tính tổng

Quyết định giao diện có thực sự cần tổng chính xác ở mỗi yêu cầu hay không.

04

Cache kết quả đọc mà không phục vụ phản hồi sai

Caching tái sử dụng kết quả trước đó thay vì dựng lại từ cơ sở dữ liệu. Bắt đầu ở lớp HTTP cho các trang công cộng, lặp lại và tài sản có phiên bản, vì cache hit có thể tránh công việc ứng dụng và cơ sở dữ liệu. web.dev khuyến nghị caching lâu cho URL có phiên bản; thay đổi URL là cơ chế vô hiệu hóa thực tế.

Chính sách cache là quyết định về tính đúng đắn. Cache chia sẻ có thể tái sử dụng một phản hồi cho nhiều người dùng, vậy không chia sẻ đầu ra liên quan tài khoản, giỏ hàng, giá hay ủy quyền trừ khi được thiết kế và kiểm thử ở phạm vi đó. Cache-Control: private giới hạn tái sử dụng trong cache trình duyệt, trong khi no-store chỉ dẫn các cache không lưu trữ.

Phân loại phản hồi

Tách đầu ra danh mục công cộng hoặc bài viết khỏi nội dung theo phiên, theo vị trí và nhạy cảm với quyền.

Kiểm thử tính tươi mới

Định nghĩa ai có thể thấy giá trị lỗi thời, trong bao lâu, và đường dẫn vô hiệu hóa hoặc tái xác thực.

05

Bảo vệ dung lượng kết nối thay vì chỉ tăng giới hạn

Kết nối là phiên khách hàng đang mở tới cơ sở dữ liệu. Worker, cron job, xem trước hoặc retry có thể cạn kiệt các slot ngay cả khi từng truy vấn đơn lẻ trông chấp nhận được. max_connections của PostgreSQL điều khiển kết nối đồng thời, được đặt khi server khởi động, và giá trị cao hơn cấp phát thêm tài nguyên bao gồm shared memory. Tăng nó mà không có mô hình tải có thể chỉ dời điểm thất bại.

Đặt một ngân sách chung cho web worker, job nền, quản trị và bản sao. Dùng connection pool có giới hạn nơi phù hợp, giữ dư chỗ cho khôi phục, và áp dụng timeout để công việc bị bỏ rơi không chờ vô thời hạn. Số an toàn phụ thuộc vào engine, bộ nhớ, tỉ lệ truy vấn và giới hạn nhà cung cấp; xác nhận với người vận hành.

Đếm mọi client

Bao gồm tiến trình web, hàng đợi, tác vụ theo lịch, migration, công cụ báo cáo và job triển khai.

Giới hạn retry

Giới hạn đồng thời và dùng backoff để một lỗi không nhân lên nhu cầu kết nối.

06

Quan sát chi phí truy vấn với ngữ cảnh và kiểm soát riêng tư

Xếp hạng công việc cơ sở dữ liệu theo tổng ảnh hưởng, không phải một mẫu chậm đơn lẻ. Một truy vấn hơi chậm được gọi hàng nghìn lần có thể quan trọng hơn một báo cáo hiếm gặp. pg_stat_statements của PostgreSQL tổng hợp dữ liệu lập kế hoạch và thực thi bao gồm số lần gọi, tổng và trung bình thời gian thực thi, số hàng và hoạt động buffer. Nó cần cấu hình server và khởi động lại để bật hoặc tắt; việc theo dõi này có thể thêm chi phí.

Liên kết nhóm truy vấn với route, phiên bản phát hành và khoảng thời gian. OpenTelemetry khuyên chỉ thu thập câu truy vấn thô sau khi đã làm sạch (sanitization) thay thế literal, và dùng tóm tắt truy vấn có cardinality thấp để nhóm. Điều này giúp người phụ trách thấy xu hướng mà không xuất dữ liệu khách hàng hoặc tạo nhãn cho mọi giá trị.

Quan sát cả đầu cuối và tổng hợp

Xem duration, tổng thời gian, số lần gọi, lỗi, kết nối và số hàng; mỗi chỉ báo hé lộ một chế độ lỗi khác nhau.

Làm sạch telemetry

Dùng truy vấn tham số hóa và xác minh literal đã bị loại trước khi trace hay log rời ứng dụng.

07

Đưa thay đổi cơ sở dữ liệu ra sản xuất như công việc độ tin cậy có thể hoàn nguyên

Xem một chỉ mục, rewrite, chính sách cache, cấu hình pool hay thay đổi schema như một thay đổi sản xuất có chủ sở hữu, chỉ số thành công và quyết định rollback. Xác thực trong môi trường đại diện, phát hành cho lát cắt giới hạn và theo dõi hành trình bị ảnh hưởng. Nhanh hơn không phải là thành công nếu thay đổi trả về dữ liệu sai, thiếu, trùng hoặc lỗi thời.

Thay đổi schema cần cẩn trọng vì các phiên bản ứng dụng có thể chồng lấp. Hướng dẫn của Google Cloud mô tả trình tự ưu tiên tương thích: phát hành ứng dụng có thể xử lý cả schema cũ và mới, thay đổi schema, rồi phát hành tính năng dùng schema mới. Điều này giữ được đường hồi ứng dụng. Cơ chế khóa và hành vi thay đổi online khác nhau theo engine và dịch vụ quản lý; cần có đánh giá có thẩm quyền cho hệ thống khối lượng lớn hoặc liên quan thanh toán.

Xác định ràng buộc trước

Đặt tên route, các tín hiệu hiệu năng và tính đúng đắn, cùng ngưỡng dừng rollout.

Canary rồi mở rộng

Xác minh hiệu năng và tính đúng đắn trong một lát cắt kiểm soát trước khi mở rộng; luyện tập đường hồi về ngoài tình huống sự cố.

HÀNH ĐỘNG / XÁC MINH

Hướng dẫn việc cần làm thiết thực.

  1. 01

    Chọn một hành trình

    Chọn một trang hoặc giao dịch có hậu quả khách hàng rõ ràng.

    XÁC MINH: Đã nêu tên đường dẫn và kết quả đúng mà nó phải giữ.
  2. 02

    Đo đường dẫn

    Ghi lại thời gian yêu cầu, số truy vấn, thời lượng cơ sở dữ liệu, số hàng và hành vi kết nối.

    XÁC MINH: Có một baseline có ngày tháng và không chứa giá trị nhạy cảm.
  3. 03

    Xếp hạng nhóm truy vấn

    Dùng thống kê và trace để xếp công việc theo tổng thời gian và tần suất gọi.

    XÁC MINH: Nhóm có thể xác định truy vấn tốn kém gắn với hành trình.
  4. 04

    Kiểm tra plan an toàn

    Dùng công cụ plan của cơ sở dữ liệu trên câu lệnh đại diện.

    XÁC MINH: Đã ghi lại ước tính so với thực tế về số hàng và hoạt động tốn kém.
  5. 05

    Chọn một thay đổi có cơ sở

    Chọn một điều chỉnh về truy vấn, chỉ mục, phân trang, cache hoặc pool và các đánh đổi của nó.

    XÁC MINH: Thay đổi có chủ sở hữu và bằng chứng kiểm thử.
  6. 06

    Kiểm thử tính đúng đắn

    Kiểm thử thứ tự, quyền, hiển thị giá hoặc tồn kho và phạm vi cache khi cần.

    XÁC MINH: Dữ liệu mong đợi được trả cho các trạng thái công khai và đã đăng nhập liên quan.
  7. 07

    Ngân sách kết nối

    Bao gồm client web, worker, theo lịch, báo cáo và quản trị.

    XÁC MINH: Tổng số thấp hơn giới hạn dịch vụ và vẫn có truy cập phục hồi.
  8. 08

    Canary và quyết định

    Phát hành cho một phần giới hạn, sau đó mở rộng hoặc quay về phiên bản đã biết tốt.

    XÁC MINH: Các tín hiệu hiệu năng, lỗi, kết nối và tính đúng đắn dữ liệu hỗ trợ quyết định.
CHỦ ĐỀ THẢO LUẬN

So sánh các đánh đổi, không chia sẻ dữ liệu riêng tư.

Dùng các câu hỏi này với nhóm hoặc cộng đồng chủ sở hữu website. Chia sẻ phương pháp và bài học, nhưng tuyệt đối không dán thông tin đăng nhập, hồ sơ khách hàng hay chi tiết hạ tầng không công khai.

  1. 01

    Hành trình khách nào đã tiết lộ cải tiến cơ sở dữ liệu hữu giá trị nhất của bạn, và bạn đo cái gì trước tiên?

  2. 02

    Nhóm của bạn quyết định thế nào khi nào một phản hồi danh mục hoặc nội dung an toàn để đưa vào cache chia sẻ?

  3. 03

    Ràng buộc rollback nào đã ảnh hưởng nhiều nhất đến trình tự phát hành schema và ứng dụng của bạn?

TÀI NGUYÊN PHỔ BIẾN / UY TÍN

Mở tài liệu nguồn.

PostgreSQL Global Development GroupUsing EXPLAIN ↗

Giải thích các node trong plan truy vấn và EXPLAIN ANALYZE đo những gì.

Đã rà soát 2026-09-27
PostgreSQL Global Development GroupIndexes and ORDER BY ↗

Trình bày khi nào chỉ mục B-tree có thể cung cấp kết quả theo thứ tự.

Đã rà soát 2026-09-27
PostgreSQL Global Development GroupLIMIT and OFFSET ↗

Tài liệu về yêu cầu thứ tự ổn định và chi phí của OFFSET lớn.

Đã rà soát 2026-09-27
PostgreSQL Global Development GroupConnections and Authentication ↗

Định nghĩa giới hạn kết nối, slot dành riêng và hệ quả về tài nguyên.

Đã rà soát 2026-09-27
PostgreSQL Global Development Grouppg_stat_statements ↗

Chi tiết thống kê ở cấp câu lệnh, yêu cầu thiết lập và các cân nhắc chi phí.

Đã rà soát 2026-09-27
web.devPrevent unnecessary network requests with the HTTP Cache ↗

Hướng dẫn về Cache-Control, URL có phiên bản và vô hiệu hóa cache.

Đã rà soát 2026-09-27
Google CloudReliable releases and rollbacks—CRE life lessons ↗

Hướng dẫn ưu tiên tương thích cho thay đổi schema và rollback ứng dụng.

Đã rà soát 2026-09-27
OpenTelemetrySemantic conventions for database client spans ↗

Hướng dẫn tracing cơ sở dữ liệu về tóm tắt và câu truy vấn đã làm sạch.

Đã rà soát 2026-09-27

Chính sách nguồn. Dùng tài liệu chính thức làm nguồn tham khảo cho bài này. Lời khuyên có điều kiện; các liên kết nội bộ là điều hướng, không phải bằng chứng.

GIẢI ĐÁP NHANH

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

Tôi có nên thêm chỉ mục mỗi khi một truy vấn chậm?

Không. Trước hết hãy chứng minh truy vấn có ý nghĩa và kiểm tra plan trên dữ liệu đại diện. Chỉ mục có thể cải thiện tìm kiếm phù hợp hoặc kết quả nhỏ được sắp xếp, nhưng nó làm tăng chi phí lưu trữ và ghi; quét bảng có thể phù hợp khi truy vấn cần phần lớn bảng.

Phân trang bằng OFFSET luôn là vấn đề chứ?

Không. Nó phù hợp với các trang nông có ORDER BY xác định. Tuy nhiên cần xem xét cho duyệt sâu vì các hàng bị bỏ vẫn phải được tính; phân trang keyset thường đáng cân nhắc cho duyệt tuần tự.

Tôi có thể cache một trang thương mại tại CDN không?

Chỉ sau khi phân loại và kiểm thử phản hồi. Nội dung công cộng lặp lại có thể phù hợp cho cache chia sẻ, trong khi giỏ hàng, dữ liệu tài khoản, đầu ra phụ thuộc ủy quyền và giá trị nhạy cảm cần xử lý hạn chế. Tham khảo đánh giá bảo mật hoặc thanh toán có thẩm quyền cho các luồng thanh toán quan trọng.

Status Is UP Editorial Team · Biên tập viên Uptime Enablement

Được rà soát bởi Người đánh giá độ tin cậy cơ sở dữ liệu với bối cảnh ứng dụng, bảo mật và phát hành. Xuất bản 2026-09-27; cập nhật 2026-09-30.