Advisory lock là khoá do chính app định nghĩa bằng một key dạng số, không gắn với dòng hay bảng nào cả — database chỉ giữ giúp cái khoá, còn ý nghĩa là do bạn quy ước.
Hợp cho "chỉ một tiến trình được chạy tại một thời điểm" nhẹ nhàng, ví dụ đảm bảo job tính tiền của mỗi tenant chỉ chạy một bản.
sql
SELECT pg_advisory_xact_lock(hashtext('tenant:42:billing'));Dùng cẩn thận: vì database không biết cái khoá đại diện cho đối tượng nghiệp vụ nào, nên quy ước cách sinh key phải thống nhất toàn hệ thống, và đừng giữ khoá quá lâu.