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

Postgres có viết lại toàn bộ hàng khi cập nhật không?

Chọn c) từ câu hỏi của bạn:

Như @Craig đã được giải thích , các cột "TOAST-could" và lớn hơn một ngưỡng nhất định được lưu trữ ngoài dòng trong bảng TOAST dành riêng cho mỗi bảng ("nhánh quan hệ" riêng biệt, các tệp riêng biệt trên đĩa). Vì vậy, một bytea 5 MB cột sẽ hầu như không bị ảnh hưởng trong bản cập nhật nếu bản thân cột đó không bị thay đổi. Hướng dẫn:

Tôi nhấn mạnh đậm.
Hàng trong ngã ba quan hệ chính vẫn được sao chép và một hàng chết vẫn ở sau khi được cập nhật (cho dù có bất kỳ giá trị nào thực sự thay đổi hay không). Đối với kích thước hàng lớn, giải pháp sau có thể trả tiền:

Tạo bảng 1:1 riêng biệt cho các cờ thường xuyên thay đổi. Chỉ là khóa chính (=khóa ngoại cùng lúc) và các cờ thường xuyên thay đổi. Điều này sẽ làm cho các bản cập nhật nhanh hơn rất nhiều và bảo toàn không gian đĩa - với chi phí bổ sung ban đầu và một số chi phí cho các truy vấn cần kết hợp cả hai bảng (các truy vấn khác thực sự nhanh hơn). Thông tin thêm về yêu cầu dung lượng trên đĩa của các hàng trong bả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. Kiểm tra các hàm PostgreSQL sử dụng và trả về con trỏ

  2. Khi tôi chạy các trường hợp kiểm tra, tôi gặp lỗi này:psycopg2.OperationalError:cursor _django_curs_140351416325888_23 không tồn tại

  3. PostgreSQL - cơ sở dữ liệu được khôi phục nhỏ hơn ban đầu

  4. Thu thập các tập hợp thống kê lớn với pg_stat_statements?

  5. lấy tên bảng trong kết quả truy vấn Postgres