PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Có thể lưu trữ một số 1 byte trong Postgres không?

Cho rằng tổng chi phí cho bất kỳ hàng nào trong PostgreSQL là 23 byte (HeapTupleHeaderData), nếu bạn thực sự quan tâm đến lượng dung lượng nhỏ đến mức này, có thể bạn đã chọn sai cách để lưu trữ dữ liệu của mình.

Bất kể, vì tất cả các loại phức tạp hơn đều có chi phí riêng của chúng (bytea thêm 4 byte tổng chi phí, ví dụ:chuỗi bit 5 đến 8), cách duy nhất để thực hiện những gì bạn đang tìm kiếm là sử dụng bigint (8 byte), dịch chuyển số từng giá trị và kết hợp OR với nhau. Bạn có thể thực hiện việc này bằng cách sử dụng phép toán chuỗi bit để làm cho mã dễ dàng hơn - tính toán dưới dạng chuỗi bit, sau đó truyền sang bigint trước khi lưu trữ - hoặc chỉ nhân / cộng theo cách thủ công nếu bạn muốn tốc độ tốt hơn. Ví dụ:đây là cách bạn lưu trữ hai byte cùng nhau thành một cấu trúc hai byte và sau đó lấy lại chúng một lần nữa:

int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256

Bạn có thể mở rộng ý tưởng tương tự vào việc lưu trữ 7 trong số chúng theo cách đó. Chi phí truy xuất vẫn sẽ rất khủng khiếp, nhưng bạn sẽ thực sự tiết kiệm được một số dung lượng trong quá trình này. Nhưng không liên quan nhiều lắm đến chỉ tiêu đề hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quên mật khẩu quản trị viên trên Postgres (Cài đặt Windows), không thể đặt lại

  2. Tìm kiếm một mô hình có phạm vi giá nhất định bằng các đơn vị tiền tệ khác nhau

  3. Kiểm tra toàn bộ bảng để tìm một giá trị duy nhất

  4. Làm thế nào để chuyển đổi giữa một hoạt động được lập chỉ mục và không được lập chỉ mục tùy thuộc vào đầu vào?

  5. Làm cách nào để biết Autovacuum của PostgreSQL đang chạy trên UNIX?