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

Cập nhật tại chỗ với PostgreSQL

Chỉ các trường được lưu trong dòng mới cần được sao chép. Đối với các trường được lưu trữ ngoài dòng trong bảng TOAST, chỉ tham chiếu đến mục nhập TOAST mới được sao chép.

Việc một trường có được lưu trữ ngoài dòng hay không phụ thuộc vào kích thước của giá trị trong trường và kiểu dữ liệu của trường.

Nếu các bộ giá trị lớn nhưng chỉ có một vài trường - như

some_id integer,
frequently_updated integer,
charblob text

thì không có nhiều điểm thay đổi bất cứ điều gì vì các bản cập nhật của frequently_updated nói chung sẽ không viết lại dữ liệu trong charblob , ít nhất là nếu nó đủ lớn để nó đáng được quan tâm.

OTOH, nếu bạn có một bảng với nhiều trường, bạn sẽ phải viết lại nhiều trường hơn với mỗi bản cập nhật.

HOT sẽ chỉ giúp bạn ở một mức độ hạn chế vì cập nhật HOT chỉ có thể xảy ra khi không có (các) cột cập nhật nào là một phần của chỉ mục có đủ dung lượng trống trên cùng một trang cơ sở dữ liệu. Đối với các hàng rộng, bạn sẽ không thể vừa nhiều bản sao trên một trang ngay cả với TOAST, vì vậy HOT sẽ chỉ có lợi.

Có thể đáng để tách các trường như vậy thành các bảng riêng biệt nếu chúng thực sự được cập nhật thường xuyên nhưng phần còn lại của bảng có các hàng rộng không thay đổi nhiều.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính toán khoảng cách giữa vị trí gps và giá trị địa lý postgis bằng cách sử dụng một hàm?

  2. Làm cách nào để chuyển CŨ, MỚI và số nhận dạng để THỰC HIỆN trong một hàm kích hoạt?

  3. Lỗi Sequelize:Không tồn tại quan hệ

  4. Lỗi:Không có mô-đun nào có tên psycopg2.extensions

  5. Đặt một tùy chọn tùy chỉnh trong một quy trình được lưu trữ