Sizing Your IIoT Table Before You Deploy

Bài tóm tắt Tiger Data 2026 2. Tăng trưởng Độ khó: Trung bình

Tiger Data · 2026 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc

Bài hướng dẫn của nhà cung cấp; số đo trên Postgres 16.13, máy 2 core, 128 MB shared_buffers, 10.000 tag. Phần cuối quảng bá hypertable. Đi cùng Tiger Data 2026 và Tiger Data 2026.

Bối cảnh

  • Một bản đo cảm biến là 20 byte (timestamp, tag ID, float), nhưng nằm trong một bảng truy vấn được thì tốn 95,6 byte, nên dự án tính 12 TB thành 60 TB. Theo Tiger Data, pilot 50 cảm biến nói rất ít về nhà máy 10.000 tag ở 1 Hz. Hai thói quen gây sai: cộng độ rộng cột (bỏ qua header, padding, lá index), và báo dung lượng theo tháng (che việc mỗi tháng trả cho mọi dòng đã từng nạp).
  • Sửa sai muộn thì đắt: đổi schema là viết lại bảng dưới khoá ACCESS EXCLUSIVE; tốc độ viết lại gần như không đổi theo kích thước nên thời gian tỉ lệ với số dòng: 19 giây cho 10 triệu dòng của pilot, khoảng hai tuần cho 631 tỉ dòng dự kiến.

Thay đổi chính (phương pháp)

  • Bốn đầu vào: số tag, tần số mẫu (theo tầng cảm biến nhanh nhất), byte mỗi dòng (đo trên bảng thật có index sẽ ship), thời gian giữ.
  • Đo dòng thật: header tuple 23 byte, padding căn 8 byte, line pointer 4 byte: heap 52,2 byte (2,6 lần). Index (tag_id, ts DESC) tốn 31,5 byte/dòng nếu dựng một lượt (fillfactor 90%) nhưng 43,4 byte/dòng khi được lấp dần bởi ingest, vì 10.000 điểm chèn gây page split liên tục, lá chỉ đầy khoảng 65%. Heap + một index = 95,6 byte (4,8 lần); hai index = 139 byte (7 lần). Hệ số 2,5–3,5 lần hay được trích dẫn chỉ đủ cho heap.
  • Dự phóng bằng một query đọc pg_relation_size, pg_indexes_size trên bảng PoC đã nạp: 10.000 tag × 1 Hz × 24 tháng = 631 tỉ dòng, 60 TB, thêm 2.514 GB mỗi tháng.
  • Đường chi phí: dung lượng tăng tuyến tính nhưng chi phí tích luỹ tăng theo bình phương thời gian giữ; năm thứ năm tốn 8,4 lần năm đầu với cùng lượng nạp. Theo họ, đây là thứ giết các dự án được duyệt theo ngân sách năm đầu; gấp ba thời gian giữ thì chi phí lưu trữ tích luỹ tăng khoảng 9 lần.
  • Trần ingest: cần 10.000 dòng/giây, nhân hệ số an toàn 1,2 (page split, autovacuum, checkpoint, retry) thành 12.000. Đo bằng pgbench trên bảng đã nạp (bảng rỗng giữ cả index trong cache nên cho trần ảo): máy thử đạt 8.719 insert/giây, tức trượt ngay ở trạng thái ổn định. Thử với 2 lần số tag và 3 lần thời gian giữ; xác nhận lại trên staging (sai lệch trên 10% thường là do quên một index).

Vì sao

Bài học cho SWE

  • Đo byte mỗi dòng trên bảng có dữ liệu thật và đủ index sẽ ship, không cộng độ rộng cột.
  • Đo trần ghi trên bảng đã đầy, không trên bảng rỗng.
  • Tính chi phí tích luỹ theo thời gian giữ, không chỉ chi phí mỗi tháng.

Liên quan