MySQL中的共享鎖


    MySQL對外提供了一種應用層級別的共享鎖,通過這個共享鎖,數據庫之上的應用程序可以實現互斥功能。這個共享鎖通過一組MySQL 內置函數實現。

 

   GET_LOCK(str,timeout)  這個函數的作用是獲取共享鎖,其中str是應用程序通信雙方協商好的一個字符串,timeout是等待該鎖的超時時間。如果能在timeout時間內獲取到鎖,則返回1;如果在timeout時間后仍然獲取不到鎖,則返回0;如果發生錯誤,則返回NULL。

   一個應用程序獲取到鎖后,可以通過RELEASE_LOCK(str)、執行新的GET_LOCK(str,timeout)、或者mysql連接被釋放時(不管是正常釋放還是異常斷開)這三種方式釋放鎖。

   如果有多個客戶端想去同時通過GET_LOCK(str, timeout)獲取鎖,則他們獲取鎖的先后順序不可知。

 

 RELEASE_LOCK(str這個函數的作用是釋放名為str的共享鎖。如果鎖被成功釋放,返回1;如果這個進程沒有占有該鎖,則返回0;如果這個名為str的鎖不存在,則返回NULL。

 

   還有兩個函數,感覺用處不是很大:

IS_USED_LOCK(str)

檢查名為str的鎖是否在使用(被鎖),如果被鎖,則返回擁有該鎖的客戶端標識,否則返回NULL。

IS_FREE_LOCK(str)

檢查名為str的鎖是否可用(沒有被鎖),如果可用則返回1;如果在使用則返回0;如果有錯誤則返回NULL。

 

 

參考:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM