簡體   English   中英

在SELECT中嵌入pg_advisory_lock與顯式使用另一個語句有什么好處?

[英]What is the benefit of embedding pg_advisory_lock inside SELECT vs explicitly using another statement?

我無法真正理解來自https://www.postgresql.org/docs/9.1/static/explicit-locking.html的示例

它們與SELECT子句一起嵌入鎖定SELECT pg_advisory_lock(id) FROM foo WHERE id = 12345; -- ok SELECT pg_advisory_lock(id) FROM foo WHERE id = 12345; -- ok

FOO選擇什么? 如果是這樣的話,我會更好理解

SELECT pg_advisory_lock(123); //lock
SELECT * FROM foo WHERE id = 12345;

它顯式鎖定塊的位置。 我似乎無法找到解釋如何在任何地方真正使用咨詢鎖定來解釋嵌入和明確地在其自己的陳述之間的差異。

執行SELECT pg_advisory_lock(123); 將在123上創建一個鎖,無論它是否是有效值。 執行SELECT pg_advisory_lock(id) FROM foo WHERE id = 123; 只有在表foo中有ID 123的條目時才會創建鎖。

讓我們注意pg_locks文檔中的行

密鑰的實際含義取決於用戶

這傾向於暗示select / from / where語法用於將鎖與現有行相關聯 ,而單獨選擇語法用於更廣泛的含義,例如應用程序范圍的鎖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM