Tôi đang chạy các truy vấn Postgres đồng thời như thế này:
UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Mỗi truy vấn ảnh hưởng đến số lượng hàng K cố định và tôi không thể tìm ra cách thực thi thứ tự các hàng được cập nhật, tôi kết thúc bằng các khóa chết. Hiện tại tôi đã khắc phục sự cố bằng cách thực thi lệnh bằng tay, nhưng điều này có nghĩa là tôi phải thực thi nhiều truy vấn hơn bình thường trong khi cũng tăng độ phức tạp tìm kiếm từ O (log N + K) lên O (K log N).
Có cách nào để cải thiện hiệu suất mà không kết thúc dễ bị bế tắc? Tôi nghi ngờ rằng việc thay thế (baz)
chỉ mục bằng (baz, id)
chỉ mục có thể hoạt động với điều kiện Postgres cập nhật các hàng theo cùng thứ tự mà nó đã quét chúng, đây có phải là một cách tiếp cận đáng để theo đuổi không?
CREATE TABLE
mã.