Đo lường hiệu suất của Firebase Realtime Database bằng công cụ phân tích cơ sở dữ liệu, được tích hợp vào Firebase CLI. Công cụ phân tích tài nguyên ghi lại tất cả hoạt động trong cơ sở dữ liệu của bạn trong một khoảng thời gian nhất định, sau đó tạo báo cáo chi tiết. Sử dụng báo cáo chi tiết để khắc phục sự cố về hiệu suất cơ sở dữ liệu, phát hiện các vấn đề và giảm số lượng truy vấn chưa được lập chỉ mục.
Tạo hồ sơ
Trước khi bắt đầu lập hồ sơ Firebase Realtime Database, hãy đảm bảo rằng bạn đang sử dụng phiên bản mới nhất của Firebase CLI và bạn đã khởi chạy phiên bản đó cho cơ sở dữ liệu và dự án mà bạn muốn lập hồ sơ. Lưu ý rằng bạn phải là người chỉnh sửa hoặc chủ sở hữu của dự án đó để lập hồ sơ.
Bắt đầu phân tích cơ sở dữ liệu bằng lệnh sau:
Trình phân tích hiển thị thông báo trạng thái khi ghi lại các thao tác từ cơ sở dữ liệu và tạo hồ sơ.firebase database:profile
Nhấn phím Enter để hoàn tất hồ sơ và hiển thị kết quả.
Diễn giải kết quả
Công cụ phân tích tổng hợp dữ liệu đã thu thập về các hoạt động của cơ sở dữ liệu và hiển thị kết quả theo ba danh mục chính: tốc độ, băng thông và truy vấn chưa được lập chỉ mục.
Tốc độ
Báo cáo tốc độ đo lường thời gian phản hồi của máy chủ (tính bằng mili giây) cho từng loại thao tác. Tuy nhiên, tốc độ đo được trong Báo cáo tốc độ có thể không phản ánh chính xác tốc độ mà người dùng cuối trải nghiệm. Nhiều yếu tố, bao gồm cả điều kiện mạng, có thể làm tăng độ trễ ở phía máy khách.
Báo cáo tốc độ bao gồm các thuộc tính sau:
- Đường dẫn: Đường dẫn trong cơ sở dữ liệu nơi các thao tác diễn ra. Nếu có hơn 25 nút con, công cụ phân tích tài nguyên sẽ thu gọn các nút này thành một đường dẫn mẹ và thêm điểm đánh dấu
$wildcard. Bạn có thể thấy thư mục gốc của cơ sở dữ liệu trong báo cáo, được biểu thị bằng dấu gạch chéo xuôi/. - Số lượng: Số lượng thao tác đã xảy ra tại đường dẫn đã cho.
- Tốc độ thực thi trung bình: Thời gian trung bình mà máy chủ cần để thực thi logic nghiệp vụ cần thiết nhằm xử lý loại thao tác cụ thể tại đường dẫn đó. Khoảng thời gian được đo lường ở đây bắt đầu sau khoảng thời gian được đo lường bằng "Thời gian chờ trung bình" được mô tả bên dưới.
- Thời gian chờ trung bình: Thời gian trung bình mà các yêu cầu phải chờ trong hàng đợi trước khi được thực thi. Sự chậm trễ này thường xảy ra đối với tất cả các yêu cầu do ứng dụng khách khởi tạo. Tổng độ trễ của yêu cầu phía máy chủ gần bằng tổng thời gian chờ và tốc độ thực thi của yêu cầu đó.
- Permission Denied (Bị từ chối cấp quyền): Số lượng thao tác tại đường dẫn nhất định bị Quy tắc cơ sở dữ liệu Firebase chặn trên cơ sở dữ liệu của bạn.
| Báo cáo tốc độ theo loại thao tác | |
|---|---|
| Tốc độ thực thi đọc | Thời gian phản hồi của máy chủ đối với các yêu cầu của ứng dụng khách về việc đọc dữ liệu từ cơ sở dữ liệu. Thời gian thực thi đọc thường điều chỉnh theo lượng dữ liệu đang được đọc, nhưng ngay cả một số lượt đọc nhỏ cũng có thể bị trì hoãn do quá trình tìm nạp trước bộ nhớ đệm. |
| Tốc độ thực thi ghi | Thời gian phản hồi của máy chủ đối với các yêu cầu của ứng dụng khách về việc ghi dữ liệu vào cơ sở dữ liệu. Thời gian thực thi thao tác ghi sẽ tăng theo lượng dữ liệu được ghi. |
| Tốc độ thực thi của Connect | Thời gian phản hồi của máy chủ đối với các yêu cầu thiết lập cho ứng dụng cơ sở dữ liệu. Độ trễ cho các yêu cầu kết nối chủ yếu là do việc ghi sổ phía máy chủ trong bộ nhớ liên quan đến quản lý kết nối. |
| Tốc độ thực thi thông báo | Lượng thời gian mà máy chủ cần để phân phối dữ liệu cho các ứng dụng khách đang theo dõi đường dẫn đã cho để nhận thông tin cập nhật theo thời gian thực. Thuộc tính Count (Số lượng) trong Báo cáo tốc độ truyền tin tổng hợp số lượng chương trình phát sóng đã diễn ra, chứ không phải số lượng ứng dụng nhận được thông tin. Ví dụ: nếu 10 ứng dụng khách đang nghe tại một đường dẫn nhất định và máy chủ truyền phát bản cập nhật cho cả 10 ứng dụng khách, thì số lượt truyền phát chỉ phản ánh 1 lượt truyền phát, mặc dù 10 ứng dụng khách đã nhận được dữ liệu. Thuộc tính Bị từ chối cấp quyền không có trong báo cáo Tốc độ phát sóng. |
Dải thông
Báo cáo băng thông cung cấp thông tin chi tiết về lượng dữ liệu mà cơ sở dữ liệu của bạn sử dụng trong các hoạt động đến và đi. Tuy nhiên, bạn không nên sử dụng Báo cáo băng thông để ước tính việc thanh toán vì báo cáo này không bao gồm băng thông dùng cho các hoạt động khác, chẳng hạn như lập hồ sơ cơ sở dữ liệu. Báo cáo băng thông ước tính sơ bộ kích thước tải trọng của dữ liệu mà các thao tác đọc, ghi và truyền phát đến và từ cơ sở dữ liệu của bạn sử dụng. Đây là công cụ đo lường hiệu suất chứ không phải công cụ dự báo thông tin thanh toán.
Báo cáo băng thông bao gồm các thuộc tính sau:
Đường dẫn: Đường dẫn trong cơ sở dữ liệu nơi các thao tác diễn ra. Nếu có hơn 25 nút con, công cụ phân tích tài nguyên sẽ thu gọn các nút này thành một đường dẫn mẹ.
Tổng: Tổng số byte gửi đi hoặc nhận được trong tất cả các thao tác tại đường dẫn đã cho.
Số lượng: Số lượng thao tác đã xảy ra tại đường dẫn đã cho.
Trung bình: Số byte trung bình được tải xuống hoặc tải lên trong các thao tác tại đường dẫn đã cho (byte/ghi hoặc byte/đọc).
| Báo cáo băng thông | |
|---|---|
| Số byte đã tải xuống | Dữ liệu được sử dụng thông qua các thao tác đọc và truyền phát được gửi qua SDK ứng dụng và API REST. |
| Số byte đã tải lên | Dữ liệu được sử dụng thông qua các yêu cầu ghi đến máy chủ cơ sở dữ liệu. Thao tác xoá sẽ xuất hiện dưới dạng thao tác ghi có 0 byte trong phần dữ liệu đến. |
Cụm từ tìm kiếm chưa được lập chỉ mục
Các truy vấn không được lập chỉ mục có thể tốn kém vì ứng dụng tải tất cả dữ liệu xuống tại một vị trí rồi thực hiện truy vấn trên đó. Điều này làm tiêu tốn nhiều băng thông hơn mức cần thiết. Giải quyết càng nhiều truy vấn chưa được lập chỉ mục càng tốt để tối ưu hoá hiệu suất của cơ sở dữ liệu.
Báo cáo Truy vấn chưa được lập chỉ mục hiển thị các thuộc tính sau:
- Đường dẫn: Đường dẫn trong cơ sở dữ liệu nơi xảy ra các truy vấn chưa được lập chỉ mục.
- Chỉ mục: Quy tắc bạn nên thêm để giải quyết các truy vấn chưa được lập chỉ mục. Tìm hiểu thêm về việc lập chỉ mục trong phần Lập chỉ mục dữ liệu.
- Số lượng: Số lượng truy vấn chưa được lập chỉ mục đã xảy ra tại đường dẫn đã cho.
Phân tích nâng cao
Để xem tất cả các thao tác mà cơ sở dữ liệu của bạn đang xử lý, hãy sử dụng cờ --raw khi bạn lập hồ sơ cơ sở dữ liệu, như sau:
firebase database:profile --raw
Kết quả thô cũng bao gồm thông tin ứng dụng cho mỗi thao tác, chẳng hạn như chuỗi userAgent và địa chỉ IP. Tìm hiểu thêm về các thao tác khác nhau được phân tích trong Firebase Realtime Database của bạn trong phần Firebase Realtime Database Operation Types (Loại thao tác).
Công cụ phân tích tài khoản: Không phải là công cụ thanh toán
Đừng sử dụng công cụ phân tích tài nguyên để ước tính chi phí băng thông. Công cụ phân tích tài nguyên được thiết kế để cung cấp cho bạn thông tin tổng quan về hiệu suất của cơ sở dữ liệu, giúp bạn theo dõi các hoạt động và khắc phục sự cố, chứ không phải để ước tính thông tin thanh toán. Công cụ này không tính đến lưu lượng truy cập mạng, mà chỉ ghi lại thông tin ước tính về dữ liệu ứng dụng được gửi trong các phản hồi.
Sau đây là một số ví dụ phổ biến về lưu lượng truy cập mạng do Firebase tính phí không có trong hồ sơ cơ sở dữ liệu của bạn:
- Phí tổn giao thức: Một số lưu lượng truy cập bổ sung giữa máy chủ và máy khách là cần thiết để thiết lập và duy trì một phiên. Tuỳ thuộc vào giao thức cơ bản, lưu lượng truy cập này có thể bao gồm: mức hao tổn giao thức theo thời gian thực của Cơ sở dữ liệu theo thời gian thực của Firebase, mức hao tổn WebSocket và mức hao tổn tiêu đề HTTP. Mỗi khi một kết nối được thiết lập, mức hao tổn này, kết hợp với mọi mức hao tổn mã hoá SSL, sẽ góp phần vào chi phí kết nối. Mặc dù đây thường không phải là một lượng băng thông lớn, nhưng có thể đáng kể nếu tải trọng của bạn rất nhỏ hoặc bạn thường xuyên kết nối trong thời gian ngắn.
- Chi phí mã hoá SSL: Có một khoản chi phí liên quan đến chi phí mã hoá SSL cần thiết cho các kết nối an toàn. Trung bình, chi phí này là khoảng 3, 5 KB cho lần bắt tay đầu tiên và khoảng 40 B cho tiêu đề bản ghi TLS trên mỗi tin nhắn đi. Đối với hầu hết các ứng dụng, đây là một tỷ lệ nhỏ trong hoá đơn của bạn. Tuy nhiên, tỷ lệ này có thể tăng lên nếu trường hợp cụ thể của bạn yêu cầu nhiều lần bắt tay SSL. Ví dụ: những thiết bị không hỗ trợ vé phiên TLS có thể yêu cầu một số lượng lớn các hoạt động bắt tay kết nối SSL.
Tìm hiểu thêm về cách tìm hiểu và ước tính hoá đơn.